CallWindowProc 失败,值为 5

CallWindowProc failed with value 5

我想通过CallWindowProc而不是SendMessage直接控制其他运行程序,有我的代码:

#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++输入任何其他运行 window的HWND后,它失败了,return值为5。这意味着Permission Denied通过 GetLastError()。我很困惑。所以如果有人能帮助我,我将不胜感激。

我正在使用 Visual studio 2010 express(C++) 并在管理员模式下打开 IDE。我也在使用 Windows 7 并且我已经关闭了我的 UAC。

提前致谢。

A window 具有 线程关联性 。它的 window 过程可以 直接 调用,只能由创建 window 本身的同一线程调用。所以你不能从另一个线程使用CallWindowProc(),更不用说另一个进程了。