タスクトレイに常駐させているのを落とすには?

解決


GEORGE  2003-06-17 09:03:46  No: 107532

デスクトップにアイコンを置いていて、それを実行させた場合タスクトレイにすでに存在したらタスクトレイの方を一度落としてまたタスクトレイに置くようにしたいのですが、どうやって二重に起動したかとかの判断などもわかりません。
そこでどういう命令を使ったらいいかなどいくつかヒントを頂きたいのですが…
よろしくお願い致します。


Lorely  2003-06-17 12:15:16  No: 107533

hPrevInstanceというメンバが二重起動防止に使えます。
(App.hPrevInstanceだったかな?)
他にはCreateMutexを使う手もあります。

アプリケーションを終了させるには
アプリケーションのハンドルを取得して
SendMessageなどでメッセージを送るのが一般的だと思います。


Loreley  2003-06-17 12:25:07  No: 107534

>アプリケーションのハンドルを取得して

EnumWindows
GetWindowsText
APIを使います・・・がタスクトレイだめかも

その場合はスナップショットを作成して
みていくことになりますね

CreateToolhelp32SnapShot
Process32First
Process32Next

のAPIだったかな。


GEORGE  2003-06-18 02:09:08  No: 107535

回答ありがとうございます。
二重起動の分はできました。


Loreley  2003-06-18 04:11:21  No: 107536

アプリケーションを終了させる点について、
ちょっと安っぽいやり方になりますが、
たとえばCドライブの一番上(つまりc:\)に
テキストファイルでもバイナリファイルでもいいですが、
なにかファイルを置いておきます、
そのファイルの中身を定期的にチェックして、
あるデータ(たとえば"1"という文字)だったら自ら終了する。
という手もあります
そういう形にしておけば

終了させる側のプログラムは、ファイルの中身を書き換えると
終了させたい側のプログラムは終了してくれます

手作業で書き換えられるので、
あまり良いやり方とは言いませんが・・・
こんな手もありますということで


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加