アプリ版:「スタンプのみでお礼する」機能のリリースについて

.netにてプログラムの2重起動チェックを行いたいのですが、
すでに起動済みのプログラムを起動しようとした場合、
起動されている方を終了してから後に起動された方を起動する
ということは可能でしょうか?
よろしくお願いします。

A 回答 (3件)

.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を使って
起動したアプリを閉じてもいいと思います。
    • good
    • 0

↓すみません。

アプリの二重起動と勘違いしてしまいました。
申し訳ありませんでした。
    • good
    • 0
この回答へのお礼

いえいえとんでもないです。貴重なご回答ありがとうございました。APIを使用するというのを参考にさせて頂き、何とか作成できました。

お礼日時:2005/10/27 11:32

こんにちは、じゃんぬねっと です。



プロセスさえ取得すれば可能です。

2 重起動のチェックを ProcessName でされているのであれば、
その重複した側の ProcessName から Process を終了して、
CloseMainWindow メソッドと Kill メソッドを入れ子に実行します。

' メイン ウィンドウにクローズ メッセージを送信する
If hProcess.CloseMainWindow() = False Then
  hProcess.Kill() ' 終了しなかった場合は強制終了する
End If

最初に起動されたかどうかの判断は起動経過時間を比較すると良いです。

この回答への補足

回答ありがとうございます。
申し訳ありません質問に大切なことが抜けていたました。2重起動のチェックを行うプログラムが、
メインのプログラムから呼ばれるサブフォームで、
DLL化されている状態なのですが、これでも可能なのでしょうか?

補足日時:2005/10/12 21:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!