PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
1158 98/04/07 14:50:33 RE(6):アプリケーションの2重起動防止について By Kochan
1139 98/04/06 10:42:34 RE(5):アプリケーションの2重起動防止について By ふくちゃん
1137 98/04/04 16:11:22 RE(4):アプリケーションの2重起動防止について By M.M
1135 98/04/03 23:25:54 RE(3):アプリケーションの2重起動防止について By aki
1134 98/04/03 18:51:09 RE(2):アプリケーションの2重起動防止について By ふくちゃん
1131 98/04/03 15:11:47 RE(1):アプリケーションの2重起動防止について By Kochan
1110 98/04/02 17:25:31 アプリケーションの2重起動防止について By ふくちゃん

カテゴリ:旧電子会議室
日付:1998年04月04日 16:11 発信者:M.M
題名:RE(4):アプリケーションの2重起動防止について

「ふくちゃん」さん「kochan」さん、こんにちは。

>>アプリケーションの2重起動について
>>IF Handle(This, TRUE) > 0 THEN
>> MessageBox(\"アプリケーション実行中\",\"このプログラムは既に起動しています。\")
>> HALT CLOSE
>>END IF
>>とアプリケーションのOpenに書けば防止できますよ。とかいたのですが、PB5でも
>>できますか?PB4までの物に関しては制御できるようなんですが

>ふくちゃんさん、こんにちは。

>上記の件ですが、私のところ(PB5.0.02)では動いてますよ。
>( Handle の第一引数として、This ではなくてアプリケーション名を直接書いてますが。
>   Helpにあるように、Thisで、ちゃんと動くと思いますけど。)

アプリケーションの二重起動防止で、
IF Handle(This, TRUE) > 0 THEN
  MessageBox(\"アプリケーション実行中\",\"このプログラムは既に起動しています。\")
  HALT CLOSE
END IF
が有効なのは、PowerBuilderアプリケーションが16bitの場合です。
というのは、16bitウィンドウズアプリケーションでは、同じアプリケーションは、リソース節約のため同じEXEやDLL
をメモリ上で共有し、それでアプリケーションを区別するため、2つめのアプリケーションのハンドルが0以外の値に
なります。
32bitウィンドウズアプリケーションでは、同一アプリケーションでもプロセスが別々に生成されるため、アプリケー
ションのハンドルは常に0です。それで、Handle関数での識別が無効になります。

ちなみに、32bitアプリケーションは複数のアプリケーションが別々のプロセスで動作しているため、メモリの消費量は
増えましたが、1つのアプリケーションがエラーでダウンしても、基本的にOSや他のアプリケーションに影響を及ぼ
すことがなくなりました。
それで、Windows3.1+PowerBuilder3や4のころのように、PowerBuilderでエラーが発生するたびにWindowsを再起動す
るという不愉快な作業がなくなりました。ありがたいことです。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

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

Server SoftWare

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

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