デスクトップにアイコンを置いていて、それを実行させた場合タスクトレイにすでに存在したらタスクトレイの方を一度落としてまたタスクトレイに置くようにしたいのですが、どうやって二重に起動したかとかの判断などもわかりません。
そこでどういう命令を使ったらいいかなどいくつかヒントを頂きたいのですが…
よろしくお願い致します。
hPrevInstanceというメンバが二重起動防止に使えます。
(App.hPrevInstanceだったかな?)
他にはCreateMutexを使う手もあります。
アプリケーションを終了させるには
アプリケーションのハンドルを取得して
SendMessageなどでメッセージを送るのが一般的だと思います。
>アプリケーションのハンドルを取得して
EnumWindows
GetWindowsText
APIを使います・・・がタスクトレイだめかも
その場合はスナップショットを作成して
みていくことになりますね
CreateToolhelp32SnapShot
Process32First
Process32Next
のAPIだったかな。
回答ありがとうございます。
二重起動の分はできました。
アプリケーションを終了させる点について、
ちょっと安っぽいやり方になりますが、
たとえばCドライブの一番上(つまりc:\)に
テキストファイルでもバイナリファイルでもいいですが、
なにかファイルを置いておきます、
そのファイルの中身を定期的にチェックして、
あるデータ(たとえば"1"という文字)だったら自ら終了する。
という手もあります
そういう形にしておけば
終了させる側のプログラムは、ファイルの中身を書き換えると
終了させたい側のプログラムは終了してくれます
手作業で書き換えられるので、
あまり良いやり方とは言いませんが・・・
こんな手もありますということで
ツイート | ![]() |