我必須爲HANDLE類型的變量。 第一個變量是一個沒有PROCESS_QUERY_INFORMATION權限的進程HANDLE(名字爲hProcess)。 第二個變量是一個進程HANDLE(名稱爲hwndProcess),我通過OpenProcess函數打開並且具有PROCESS_QUERY_INFORMATION訪問權限。我確定這兩個過程都是一個過程。 但是當我比較如下返回false; if(hProcess == hwndProcess){do something} 我應該怎麼做?如何比較HANDLE類型的兩個變量
3
A
回答
3
沒有明確的方法來檢查兩個句柄是否引用相同的進程。唯一的方法是查詢過程信息並檢查,例如在每個句柄上使用GetProcessId
來檢查進程ID。
如果您沒有必要的訪問權限來調用所需的查詢功能,那麼您可以嘗試調用DuplicateHandle
以獲得具有更多訪問權限的新句柄。但是,如果失敗了,那麼您無法判斷句柄是否屬於同一過程。
0
hProcess不得持有將被關閉的Process的ProcessHandle。它可以並且大多數時候都是NULL。我正在做類似的事情來獲取終止進程的PID。
if((hProcess == NULL) || (hProcess == GetCurrentProcess())){
pid = GetCurrentProcessId();
} else {
pid = ProcessHandleToId(hProcess); }
你確定,它是一個訪問權限問題,你的函數不會失敗,因爲句柄是NULL?
相關問題
- 1. 如何比較Java中的兩個「Comparable」類型變量?
- 2. 如何比較兩個變量/列類型NTEXT
- 3. 如何比較兩個變量的值
- 4. 如何比較兩個CGSize變量?
- 5. 比較兩個bash變量
- 6. PowerShell:比較兩個變量
- 7. PHP - 比較兩個變量
- 8. 比較兩個TDateTime變量
- 9. 比較兩個變量C
- 10. 比較兩個變量
- 11. 在java中比較兩個日期類型變量
- 12. 比較兩個類的類型
- 13. C#如何比較兩個變量是否是相同的類型?
- 14. 如何比較兩個變量的類型而不生成PyLint警告?
- 15. 與無變量類型的比較
- 16. 兩個變量的VBA比較
- 17. 比較arduino中的兩個雙變量
- 18. Mysql比較兩個變量的查詢
- 19. 比較兩個變量的相應值
- 20. 比較SSIS中的兩個變量
- 21. PHP - 比較兩種不同類型的變量bug或問題
- 22. 在兩種不同類型的列表中比較變量
- 23. 比較兩個對象的類型Microsoft.AnalysisServices.MajorObject
- 24. 比較不同類型的兩個值
- 25. 比較字符串與變量類型
- 26. Java比較器類型變量問題?
- 27. 如何比較vb.net中的兩個類?
- 28. XSLT:比較兩個列表變量
- 29. 比較兩個代理變量
- 30. 在Wordpress中比較兩個php變量
DuplicateHandle的語法如下。 BOOL WINAPI DuplicateHandle( __in HANDLE hSourceProcessHandle, __in HANDLE hSourceHandle, __in HANDLE hTargetProcessHandle, __out LPHANDLE lpTargetHandle, __in DWORD dwDesiredAccess, __in BOOL bInheritHandle, __in DWORD dwOptions ); dwOptions可以獲得以下兩個值之一(DUPLICATE_CLOSE_SOURCE或DUPLICATE_SAME_ACCESS)或這些值的任意組合。現在可以將這些值與 PROCESS_QUERY_INFORMATION標記進行連接。 – Phoenix 2010-08-17 08:51:26
將dwOptions設置爲0,並將dwDesiredAccess設置爲所需的訪問權限(例如PROCESS_QUERY_INFORMATION和其他任何您需要的)。 – 2010-08-17 16:20:32