我有一组 hWnds 按钮,我想监视点击次数。我还有一组 HWINEVENTHOOK 用于监视它们。GetWindowThreadProcessID 为我提供了一个 LPDWORD 进程 ID,SetWinEventHook 不接受该 ID。我不清楚在这个例子中我是否正确使用了 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++;
}
Run Code Online (Sandbox Code Playgroud)
LPDWORD只是一个 typedef DWORD*,当 Windows SDK 函数参数是“LPsomething”时,您通常需要传递一个指向“something”的指针(LP[C][W]STR 字符串类型除外)。
DWORD processID;
DWORD threadID = GetWindowThreadProcessId(hWnd, &processID);
if (threadID)
{
// Do something with threadID and/or processID
}
Run Code Online (Sandbox Code Playgroud)
Windows SDK对桌面/经典 API使用系统匈牙利表示法。
| 归档时间: |
|
| 查看次数: |
10396 次 |
| 最近记录: |