gpt4 book ai didi

c - 按键到非事件窗口

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:51 25 4
gpt4 key购买 nike

我正在尝试制作一个将按键发送到非事件窗口的程序,我正在使用“SendMessageCallback()”但它没有给出错误,也没有发送按键。

typedef enum {false,true} bool;
bool KeyDown(HWND hWnd, WORD dKey){
if(!SendMessageCallback(hWnd, WM_KEYDOWN, 0, dKey, (SENDASYNCPROC)NULL, (ULONG_PTR)NULL))
return false;
return true;
}

bool KeyUp(HWND hWnd, WORD uKey){
if(!SendMessageCallback(hWnd, WM_KEYDOWN, 0, uKey, (SENDASYNCPROC)NULL, (ULONG_PTR)NULL))
return false;
return true;
}

那么,我简单的这样调用它:

HWND FOO = FindWindow("FOO", NULL );
if( FOO == NULL )
MessageBox(NULL, "FOO Not Found", "ERROR", MB_OK);
if (!KeyDown(FOO, VK_SPACE))
MessageBox(NULL, "KeyDown failed to execute!", "ERROR", MB_OK);
if (!KeyUp(FOO, VK_SPACE))
MessageBox(NULL, "KeyUp failed to execute!", "ERROR", MB_OK);

我用真正的 HWND 代替了 FOO,如果需要更多信息请告诉我。问题是它不发送按键或显示消息框。

编辑:我尝试在按下键和释放键之间添加延迟,但没有解决问题。

最佳答案

在对您正在使用的窗口一无所知的情况下,我只能推测它没有被编码为在其 WndProc 中处理击键。您可以使用 Spy++ 或类似工具来验证消息是否确实在发送,但这并不能保证它们会被处理。您不能将击键发送到不需要它们的任意窗口。顺便说一句,击键消息通常会发送到窗口的消息队列,而不是直接发送到窗口的 WndProc,因此请尝试使用 PostMessage()

关于c - 按键到非事件窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22901856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com