我想要獲得從DLL加載DLL的過程的句柄。我調用EnumWindows(EnumWindowsProc,NULL);我的方法是:在DLL_PROCESS_ATTACH中調用 如何獲得一個DLL加載過程句柄
我EnumWindowsProc實現如下:
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) {
if(GetCurrentProcessId() == GetWindowThreadProcessId(hWnd,NULL)){
MessageBox(hWnd,L"I loaded your dll!",L"it's me",MB_OK);
return TRUE;
}
return FALSE;
}
的問題是,GetCurrentProcessId()== GetWindowThreadProcessId(HWND,NULL)是不正確的(如果我把這些URL調用外,如果阻止一切正常,但它會爲每個列出的窗口調用一次)。
有沒有其他辦法可以說明問題?這種方法是完全錯誤的還是我錯過了一些東西?
Thanx提前
GetWindowThreadProcessId返回線程ID,第二個參數得到的進程ID。 (注意:不要發瘋DllMain中,只有幾個功能,這些功能實際上是安全的在功能使用) – Anders 2010-07-29 17:17:58
我知道,但我的問題是我需要做的裏面的DllMain所有的東西,因爲我的DLL被注入正在運行的過程。 – pigiuz 2010-07-29 19:56:27