DWORD GetWindowThreadProcessId(
HWND hWnd,
LPDWORD lpdwProcessId
);
根據檔案,回傳值是創建視窗的執行緒的識別符號。這意味著什么?
我想我只是想知道 threadID 與 processID 有什么關系,它是什么以及它有什么用途 - 它是否以某種方式驗證 processID?我只想丟棄它,因為 processID 是我所追求的。
uj5u.com熱心網友回復:
提前解決字面問題,GetWindowThreadProcessId
[r] 檢索創建指定視窗的執行緒的識別符號,以及創建視窗的行程的識別符號(可選)。
只要您了解潛在的關系,這都是不言自明的:
- Windows 歸執行緒所有。當一個執行緒創建一個視窗時,兩者進入不可分割的關系,這種關系一直持續到視窗被銷毀。
- 執行緒歸行程所有。一旦在特定行程中創建了一個執行緒,它就屬于該行程,直到它終止。
換句話說:每個視窗都由一個執行緒擁有,而該執行緒又屬于一個行程。這種關系在視窗的生命周期內是固定的。
隨著檔案談論“識別符號”,聽起來好像是明確的。情況并非如此,因為系統提供了兩種不同的方式來識別執行緒(或行程):通過 ID 和通過句柄。
ID(由此 API 回傳)只是數字值,例如 value 42。它們可以自由地傳遞,由命令列工具回傳和提供給命令列工具,等等。它們沒有附帶任何條件。其推論是,特定值的含義隨時間而變化。
另一方面,句柄與實際物件相關聯。只要客戶端持有一個句柄,系統就會使參考的物件保持活動狀態。因此,參考的物件不會改變,允許客戶端對生命周期做出假設。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314740.html
標籤:登录
