CallWindowProc失败,值为5

问题描述 投票:-4回答:1

我想通过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 DeniedGetLastError()。我很迷惑。因此,如果有人可以帮助我,我将不胜感激。

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

提前感谢。

c visual-studio-2010 winapi visual-c++ sendmessage
1个回答
1
投票
窗口具有

线程关联性。它的窗口过程只能由创建窗口本身的同一线程<< direct >>调用。因此,您不能使用其他线程的CallWindowProc(),更不用说其他进程了。

© www.soinside.com 2019 - 2024. All rights reserved.