나는 hWnds 개의 버튼을 가지고 있는데, 클릭 수를 모니터하고 싶습니다. 또한 모니터 할 때 사용할 HWINEVENTHOOK 배열이 있습니다. GetWindowThreadProcessID는 나에게 SetWinEventHook에 의해 받아 들여지지 않는 LPDWORD 프로세스 ID를 제공합니다. 나는 LPDWORD가 무엇인지에 대해 명확하지 않다. 도와주세요? LPDWORD 그냥 DWORD에 대한 포인터 지적 모든 사람들에게C++ LPDWORD 란 무엇입니까?
감사합니다 아래
고정 코드입니다.
새로운 코드 :
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 프로세스 ID = 0]과''GetWindowThreadProcessId (HWND, 프로세스 ID) '와'SetWinEventHook (EVENT_OBJECT_INVOKED, EVENT_OBJECT_INVOKED, NULL, WinEventProcCallback, 프로세스 ID, threadID, WINEVENT_OUTOFCONTEXT) '의 문제점은 무엇인가? – user0042
잘못된 코드 일 뿐이며 실행하려고하면 충돌이 발생합니다. 'DWORD processID'를 사용해, 2 번째의 인수에'& processID'를 건네 줄 필요가 있습니다. 즉, winapi 함수가 변수를 업데이트 할 수 있도록 참조로 DWORD를 전달합니다. 구조 헝가리 인, hehe. –
@HansPassant는 주소 (즉,에 대한 포인터) –