20110518

[解法]如何讓Delphi TrayIcon不重複執行程式

[解法]如何讓Delphi TrayIcon不重複執行程式
[author]
Aeon Linn.@20110518

[問題]
解決不重複執行程式的關鍵字是:
CreateSemaphore 或 CreateMutex,
但是程式若使用了 TCoolTrayIcon或類似的元件,
而且已經縮小在Tray,
那麼,『想要在重複執行時,直接叫出已經執行的程式』,
會遇到一個小小的問題:

原本依據常理推論:
SendMessage(...,WM_SYSCOMMAND ,SC_RESTORE,0) 即可完成此需求,
但發現會引起 Minimize to Tray以及部分Form元件功能的遺失,
再次點擊TrayIcon則能解除此狀況;
判斷為TrayIcon的問題。

[解法]
使用SendMessage
在.dpr SendMessage的時候改採自定義Messages.傳送指定參數;
而程式內部也接收此訊息,
在訊息觸發且參數正確時觸發CoolTrayIconClick行為(顯示/隱藏)

[註解]
自訂義MSG請參考 [教學]DELPHI使用Windows Message簡易傳值
#

0 意見:

張貼留言