2017-10-27 5 views
0

システムトレイに最小化できるシングルトンアプリケーションがあります。ユーザーがアプリケーションの別のインスタンスを起動し、_singletonでスクリプトの最初のインスタンスが検出され、新しいインスタンスを終了する前にウィンドウをアクティブにすることができます。AutoItシングルトンで初期ウィンドウを再表示する方法

ただし、最初のインスタンスがGUISetState(@SW_HIDE)で非表示になっていると、最初のインスタンスが表示されません。私はウィンドウのハンドルを取得しようとしましたが、成功しませんでした。

最初のインスタンスの表示を解除するにはどうすればよいですか?

は、以下のコードを考えてみましょう:

If _Singleton("MyApp.exe", 1) = 0 Then 
    GUISetState(@SW_SHOW, WinGetHandle("MyApp.exe")) 
    WinActivate("MyApp") 
    Exit 
EndIf 

答えて

0

WinGetHandle()のパラメータとしてexeファイル名を取りません。それはウィンドウタイトルを取る。隠されたウィンドウに別のアプリケーションで使用されない固有の名前を付けて、それを使ってハンドルを取得することができます。

hereまたはhereの簡略化されたバージョンで_WinAPI_RegisterWindowMessage()を使用して、アプリケーションの1つのインスタンスからウィンドウを再表示する可能性のある別のインスタンスにメッセージを送信できます。

関連する問題