2013-04-04 24 views
0

如何處理自定義頁面的WM_CLOSE消息?在NSIS中處理WM_CLOSE

我想在用戶關閉對話框時在系統托盤中添加應用程序(使用NotifyIcon插件)。

任何想法?

回答

1

爲什麼選擇WM_CLOSE?

NSIS提供了幾種如何處理安裝程序退出的方法。

您可以使用.onUserAbort, .onInstFailed, .onInstSuccess or .onGUIEnd回調來處理各種情況。

.onGUIEnd被觸發,每次(窗口關閉後)

.onInstSuccess被觸發時,安裝是成功的,對之前的安裝窗口關閉

.onInstFailed當用戶點擊安裝失敗後的「取消」按鈕

.onUserAbort當用戶點擊'取消'按鈕,並且安裝尚未失敗。

正如您所看到的所有情況都已處理,請參閱NSIS手冊瞭解詳情。

+0

因爲我真的不希望程序關閉,當用戶單擊關閉按鈕,而不是想隱藏它,將它添加到系統托盤中,並保持它在後臺運行,並且只有當用戶右鍵單擊sys托盤圖標時關閉它並選擇退出。我是否要求太多? – foobar 2013-04-04 13:48:58

+0

所以你的問題是錯誤的,它與WM_CLOSE無關。嘗試爲您的功能使用通知圖標插件:http://nsis.sourceforge.net/NotifyIcon_plug-in與一些API調用(以最小化窗口) – Slappy 2013-04-07 09:13:04

0

正如Slappy說,如果你只需要一個「我還活着,而做一些事情」,.onGUIEnd是你的朋友:

# This callback is called right after the installer window closes. 
Function .onGUIEnd 

    # Create notify icon (will be always at tray), with default installer icon. 
    NotifyIcon::Icon /NOUNLOAD "yitb" 103 "Just a tip" "Balloon!" "Cool!" 

    # Launch your process here 

    # Remove tray icon. 
    NotifyIcon::Icon "r" 
FunctionEnd 

如果你正在尋找一個「最小化到托盤」選項只隱藏用戶界面,並能夠點擊圖標恢復它,然後檢查HideWindowShowWindow

+0

「如果您正在尋找」最小化托盤「選項只是隱藏用戶界面,並能夠恢復它點擊圖標,那麼我不知道該怎麼做。「 ----這正是我所要求的。 :/ – foobar 2013-04-05 06:37:38

+0

那麼你應該編輯你的問題,以澄清它。 – 2013-04-05 09:55:32