- 締切済み
2重起動の制御に関して
.netにてプログラムの2重起動チェックを行いたいのですが、 すでに起動済みのプログラムを起動しようとした場合、 起動されている方を終了してから後に起動された方を起動する ということは可能でしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- W_KNIGHT
- ベストアンサー率0% (0/0)
↓すみません。アプリの二重起動と勘違いしてしまいました。 申し訳ありませんでした。
- W_KNIGHT
- ベストアンサー率0% (0/0)
.netのメソッドではなく、WinAPIになってしまいますが・・ もしそれでよければ Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub cd_Click() Public Const WINDOW_NAME_0 As String = "???????" strFilePath = "C:\Program Files\?????" Dim hWnd_0 As Long hWnd_0 = FindWindow(vbNullString, WINDOW_NAME_0) If hWnd_0 = 0 Then Shell strFilePath, 1 End If 後は、PostMessageのWM_CLOSEを使って 起動したアプリを閉じてもいいと思います。
- JeanneNet
- ベストアンサー率48% (100/208)
こんにちは、じゃんぬねっと です。 プロセスさえ取得すれば可能です。 2 重起動のチェックを ProcessName でされているのであれば、 その重複した側の ProcessName から Process を終了して、 CloseMainWindow メソッドと Kill メソッドを入れ子に実行します。 ' メイン ウィンドウにクローズ メッセージを送信する If hProcess.CloseMainWindow() = False Then hProcess.Kill() ' 終了しなかった場合は強制終了する End If 最初に起動されたかどうかの判断は起動経過時間を比較すると良いです。
補足
回答ありがとうございます。 申し訳ありません質問に大切なことが抜けていたました。2重起動のチェックを行うプログラムが、 メインのプログラムから呼ばれるサブフォームで、 DLL化されている状態なのですが、これでも可能なのでしょうか?
お礼
いえいえとんでもないです。貴重なご回答ありがとうございました。APIを使用するというのを参考にさせて頂き、何とか作成できました。