我有一個 python 應用程式,它使用通過 win32 創建的托盤圖示來控制 tkinter GUI。托盤圖示可以向 tkinter GUI(隱藏/顯示/關閉/等)發出命令,但由于它位于單獨的執行緒中,因此它不會接受來自 tkinter GUI 的命令(例如退出程式)。
我在這里找到了一個回應,其中概述了訪問托盤圖示執行緒的程序:如何從遠程執行緒銷毀視窗 ?
- 從 GetWindowThreadProcessId() 獲取托盤圖示的執行緒 ID
- 使用 SetWindowsHookEx() 安裝訊息掛鉤
- 使用訊息鉤子觸發托盤圖示執行緒上的退出命令
這聽起來很簡單,但我不清楚如何在實踐中實作它。
第 1 步很簡單:
tid, pid = win32process.GetWindowThreadProcessId(self.hwnd)
有人可以提供有關第 2 步和第 3 步的格式的示例/指南嗎?
uj5u.com熱心網友回復:
IInspectable 在評論中建議的解決方案是直接使用 PostMessage,如下所示:
win32gui.PostMessage(self.hwnd, win32con.WM_CLOSE, 0, 0)
這允許 tkinter GUI 告訴 win32 托盤圖示退出,而不會遇到與執行緒相關的訪問錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314727.html
