我目前正在尝试获取 Windows 计算器应用程序的所有用户输入。似乎这样做的方法是使用 Win32 拦截所有用于计算器窗口的键盘和鼠标输入。我在下面的链接中阅读了关于子类化窗口的 MSDN 页面,并对子类化做了一些研究。
我有对窗口进行子类化的语法,但我不确定如何告诉程序我要对哪个窗口进行子类化。
我到目前为止的代码如下所示。我现在的问题是我不确定如何分配变量“hWndEdit”。我对 Win32 编程非常陌生,因此感谢您提供任何帮助。
(链接) http://msdn.microsoft.com/en-us/library/windows/desktop/ms633570 (v=vs.85).aspx
WNDPROC wpOrigEditProc;
wpOrigEditProc = (WNDPROC) SetWindowLong(hWndEdit,GWL_WNDPROC,(long) WndEditProc);
LRESULT CALLBACK WndEditProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CHAR:
case WM_KEYUP:
case WM_KEYDOWN:
if (hWnd == hWndEdit)
return 0;
break;
case WM_DESTROY:
// Remove the subclass from the edit control.
SetWindowLong(hWndEdit, GWL_WNDPROC, (LONG) wpOrigEditProc);
break;
default:
return CallWindowProc((WNDPROC ) wpOrigEditProc, hWnd, message, wParam, lParam);
}
return CallWindowProc((WNDPROC ) wpOrigEditProc, hWnd, message, wParam, lParam);
}