PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
21832 05/03/22 17:43:56 RE(1):PB6.5: アプリケーションの重複起動チェックについて By レタス
21831 05/03/22 17:04:06 PB6.5: アプリケーションの重複起動チェックについて By okamuramamoru

カテゴリ:スクリプトの記述
日付:2005年03月22日 17:43 発信者:レタス
題名:RE(1):PB6.5: アプリケーションの重複起動チェックについて

okamuramamoruさん、こんにちは。

以下はアプリケーションの2重起動防止の例ですが
もし特定の画面であればハンドルにWindowのハンドルをセットすればできるのでは?

外部関数に以下のコードを記述

// 二重起動チェック用Win32API
Function ULong CreateMutex(Ulong lpMutexAttributes, Boolean bInitialOwner,String lpName) 
Library \'kernel32.dll\' Alias for CreateMutexA

Function Long GetLastError() Library \'kernel32.dll\'



uf_do_mutex()を作成(お好きな場所に)

/*
概 要:アプリケーションの二重起動をチェックする
引 数:なし
戻り値:エラー番号
---------------------------------------------------

If uf_do_mutex() = 183 Then
Halt
End If
*/

String ls_name
Application la_app

// 現行アプリケーションオブジェクトのハンドルを取得
la_app = GetApplication()

// 単一の実行可能なアプリケーションから Mutex を作成します。
If Handle(la_app) > 0 Then
  // 名前付きのミューテックス(mutually exclusive ; 相互排他)オブジェクトを作成
  ls_name = la_app.AppName + Char(0)
  CreateMutex(0,True,ls_name) // WIndowa API

  // 拡張エラー情報を取得するには、GetLastError 関数を使います。
  // GetLastError 関数の戻り値が183の場合は既に存在する事をあらわします。
  If GetLastError() = 183 Then
    MessageBox(\"起動エラー\",\"アプリケーションは既に起動されています。\",StopSign!)
    Return 183
  End If
End If

Return 0


アプリケーションのopenイベントに以下のコードを記述

// 二重起動防止
If uf_do_mutex() = 183 Then
   Halt Close
End If


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS Windows NT 4.0
DBMS Oracle 8.0
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.