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月08日 11:16 発信者:Air Hawk
題名:RE(4):PB6: NT or 95:EXEの多重起動防止(FindWindowAは使えない・・・)
こんにちは。
>自己レスです。
>
>むちゃくちゃ邪道なやり方ですが、方法がありました。
こんな方法はいかがでしょう。
アプリケーションの Open イベントに
long l_fno
if FileOpen(\"$$$tekito.$$$\") = -1 then
l_fno = FileOpen(\"$$$tekito.$$$\", LineMode!, Write!, LockWrite!)
FileClose(l_fno)
else
MessageBox(\"開始エラー\", \"既に起動しています\", StopSign!)
halt
end if
Open(w_XXXX)
アプリケーションの Close イベントには
FileDelete(\"$$$tekito.$$$\")
てな感じです。
まあこのままではテンポラリファイルがアプリケーションを起動するディレクトリに
できてしまうので、実際にはテンポラリファイル名をインスタンス変数にでもして、
初期値としてテンポラリディレクトリ内のファイル名(絶対パス)を指定すればよいと
思います。
弱点としては、
・テンポラリファイルを消されたら判定できない
・アプリケーションが途中でエラー終了したら、次回起動前にテンポラリファイル
を削除しなければならない
ことでしょうか。
FileOpen 関数のヘルプでは、存在しないファイルを指定すると新しく作成されると
ありますが、どうやらこれは Write! モードのときだけのようです。C の関数とか
も同様の動きをするので、おそらくヘルプの不具合なのでしょう。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.