我想通过CallWindowProc
而不是SendMessage
直接控制other运行程序,这是我的代码:
#define UNICODE
#include <Windows.h>
#include <stdio.h>
int main(){
HWND hwnd;
scanf("%d", &hwnd);
WNDPROC l = (WNDPROC)GetWindowLongPtr(hwnd, GWL_WNDPROC);
CallWindowProc(l, hwnd, WM_PAINT, NULL, NULL);
return GetLastError();
}
非常简单,但是在我通过spy ++输入获得的任何其他正在运行的窗口的HWND之后,它失败,返回值为5。这意味着Permission Denied
为GetLastError()
。我很迷惑。因此,如果有人可以帮助我,我将不胜感激。
我正在使用Visual Studio 2010 express(C ++),并以管理员模式打开IDE。我也在使用Windows 7,并且已经关闭了UAC。
提前感谢。
线程关联性。它的窗口过程只能由创建窗口本身的同一线程<< direct >>调用。因此,您不能使用其他线程的CallWindowProc()
,更不用说其他进程了。