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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.