2009-07-27 76 views
3

我正在嘗試製作Windows應用程序,用於檢查背景中的某些內容,並通過系統托盤圖標通知用戶。使用系統托盤圖標創建後臺進程

該應用程序使用Not managed C++製作,沒有選項切換到.net或Java。

如果用戶想要停止應用程序,他將使用托盤圖標。

該應用程序不能使用,因爲系統托盤方的服務和因爲它必須沒有在用戶計算機上安裝任何東西運行(這是一個單個.exe)

使用典型的Win32程序結構(的RegisterClass,WndProc的等等)我不知道如何放置一些代碼來分開窗口消息循環。可能我必須使用CreateProcess()或CreateThread()?它是處理多線程環境的正確方法嗎?

如果我必須使用CreateProcess()/ CreateThread(),我怎麼能在兩個線程之間交流?

感謝;)

+0

你的問題實際上是很多問題。 1.我如何創建後臺進程? 2.如何讓兩個線程/進程進行通信? 3.如何創建和使用系統托盤圖標? – 2009-07-27 13:39:21

+0

你說得對。我認爲數字2是更復雜的:) – HyLian 2009-07-27 13:43:42

+0

的確......我認爲如果你分別解決這些問題,你會在獲得有用的答案上更成功:-) – 2009-07-27 13:55:15

回答

0

要創建新進程要做到這一點,我懷疑,你想創建應用程序中的線程。執行此操作的API是CreateThread。但是如果你使用C++,你應該真的在研究使用框架和類庫來做到這一點,而不是從頭開始寫有效的C代碼。

屬於應用程序的所有線程共享應用程序的全局變量,因此可用於通信。您將需要像關鍵部分那樣保護這種多線程訪問。

0

嗯,首先我會考慮是否真的需要一個單獨的線程運行監管碼。如果您只是定期輪詢某些值或系統狀態,那麼您可能可以使用計時器在主線程上運行所有內容。假設這不是一個選項,按照已經建議的方式使用CreateThread創建一個單獨的工作線程。在主線程上創建一個不可見的消息窗口。當工作人員需要更新主線程時,它應該向您的窗口發佈消息。主線程將根據需要更新系統托盤圖標。