我有一個陣列的按鈕,我想監視點擊的hWnds。我也有一系列的HWINEVENTHOOK,我將用它來監控它們。 GetWindowThreadProcessID給我一個LPDWORD進程ID,SetWinEventHook不接受。我不清楚什麼是LPDWORD。請幫忙?C++什麼是LPDWORD?
固定碼下面
謝謝大家誰指出,LPDWORD只是一個指向DWORD。
新代碼:
int i = 0;
for (HWND hWnd : hWnds) {
DWORD processID = 0;
DWORD threadID = GetWindowThreadProcessId(hWnd, &processID);
hooks[i] = SetWinEventHook(EVENT_OBJECT_INVOKED, EVENT_OBJECT_INVOKED,
NULL,
WinEventProcCallback, processID, threadID, WINEVENT_OUTOFCONTEXT);
i++;
}
'DWORD的ProcessID = 0;'和'GetWindowThreadProcessId(HWND,&的ProcessID);'和'SetWinEventHook(EVENT_OBJECT_INVOKED,EVENT_OBJECT_INVOKED, NULL, WinEventProcCallback,的ProcessID,線程ID,WINEVENT_OUTOFCONTEXT);'什麼問題? – user0042
這只是不好的代碼,當你嘗試運行它時會崩潰。您必須使用'DWORD processID'並傳遞'&processID'作爲第二個參數。換句話說,你通過引用傳遞一個DWORD,所以winapi函數可以更新你的變量。匈牙利系統救援,嘿嘿。 –
@HansPassant @HansPassant不是指向地址的引用(即指向) –