PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
1719 98/06/08 11:16:27 RE(4):PB6: NT or 95:EXEの多重起動防止(FindWindowAは使えない・・・) By Air Hawk
1715 98/06/08 10:30:03 RE(3):PB6: NT or 95:EXEの多重起動防止(FindWindowAは使えない・・・) By こてちゅ
1697 98/06/05 13:14:35 RE(2):FindWindowAでもできます。しかし・・・ By かじ
1691 98/06/05 11:06:44 RE(1):FindWindowAでもできます。しかし・・・ By あすかちゃんの父
1677 98/06/04 18:12:46 PB6: NT or 95:EXEの多重起動防止(FindWindowAは使えない・・・) By こてちゅ

カテゴリ:旧電子会議室
日付:1998年06月05日 11:06 発信者:あすかちゃんの父
題名:RE(1):FindWindowAでもできます。しかし・・・

こてちゅさん、こんにちは。

>PBのアプリケーション起動時に多重起動を防止したいのですが、
>APIのFindWindowAでは、タイトルバーの文字列を正しく入力しなければならない為、
>使用できません。(SDIで画面遷移していくのと、画面毎にタイトルバーが違う為。)

>FindWindowAを使用せずに簡単に多重起動を防止する方法はないでしょうか?

APIのFindWindowAで、ウィンドウタイトルを使用せずにウィンドウ
クラス名を使えば、ウィンドウタイトルを意識せずに特定のアプリが
起動しているかどうか、調べることができます。スクリプトはwordの
起動チェックをする場合、

// 関数宣言
FUNCTION long FindWindowA(string sClass, long sPassNULL) Library \"user32.dll\"

// スクリプト
string word_class =\"OpusApp\"
long app_hwnd

app_hwnd = FindWindowA(word_class, 0)
if app_hwnd > 0 then
    messagebox(\"word\", \"wordは起動しています\")
else
    messagebox(\"word\", \"wordは起動していません!!\")
end if

でできます。
しかしここで1つ問題が・・・・・
ウィンドウクラス名を調べる方法が分からないのです。(T_T)
アプリケーション固有のウィンドウクラス名が定義されている
はずですが、どうやって調べれば良いのやら・・・・・ どなたか
ご存知の方はいらっしゃいませんか?
ちなみに上のスクリプトの\"OpusApp\"はPowerSoftのFAX Line
からの情報です。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

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

Server SoftWare

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

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