Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何通过C++;_C++_Windows_Visual Studio_Winapi_Visual C++ - Fatal编程技术网

C++ 如何通过C++;

C++ 如何通过C++;,c++,windows,visual-studio,winapi,visual-c++,C++,Windows,Visual Studio,Winapi,Visual C++,我需要在后台获取Windows消息。 我尝试使用“只显示消息”窗口,但它不起作用。 我发现只有当窗口处于“可视”和“焦点”状态时,它才起作用。 请帮帮我,非常感谢 Windows消息示例 #定义WM_键优先0x0100 #定义WM_向下键0x0100 #定义WM_键控0x0101 #定义WM_CHAR 0x0102 #定义WM_DEADCHAR 0x0103 #定义WM_SYSKEYDOWN 0x0104 #定义WM_系统键控0x0105 #定义WM_SYSCHAR 0x0106 #定义WM_s

我需要在后台获取Windows消息。 我尝试使用“只显示消息”窗口,但它不起作用。 我发现只有当窗口处于“可视”和“焦点”状态时,它才起作用。 请帮帮我,非常感谢

Windows消息示例
#定义WM_键优先0x0100
#定义WM_向下键0x0100
#定义WM_键控0x0101
#定义WM_CHAR 0x0102
#定义WM_DEADCHAR 0x0103
#定义WM_SYSKEYDOWN 0x0104
#定义WM_系统键控0x0105
#定义WM_SYSCHAR 0x0106
#定义WM_sysdedchar 0x0107
仅限消息窗口的代码
#包括
#包括
使用名称空间std;
名称空间{
LRESULT回调窗口过程(HWND HWND、UINT uMsg、WPARAM WPARAM、LPARAM LPARAM)
{
标准::cout
我尝试使用“只显示消息”窗口,但它不起作用

您需要了解消息窗口的真正用途

“仅邮件”窗口允许您发送和接收邮件。它是 不可见、没有z顺序、无法枚举且不存在 接收广播消息。窗口只发送消息

换句话说,您可以向它发送消息(
PostMessage
SendMessage

像这样,

SendMessage(messageWindow,WM_CHAR, (WPARAM)0x41, (LPARAM)0);
那么

使用仅限消息窗口的好处

  • 消息的空闲队列
如果您的系统是基于某种外部IO的消息,那么 您需要排队设施,然后您的应用程序可以使用 PostMessage可将消息发布到隐藏窗口。这些消息将 无法在正常的Windows消息队列中排队

  • 进程间/进程内通信
应用程序的另一部分(或外部应用程序)可以 处理这些消息的到达


如果您想在后台监视Windows消息(第三方GUI应用程序),可以按照@Remy的建议进行操作。

谢谢您的建议,最后,我发现我们可以使用CreateWindowEx()并保持窗口不可见,以获取我需要的后台窗口消息。关于在后台获取密钥事件,我们可以使用RegisterHotKey()

#包括
#包括
#包括
使用名称空间std;
#定义最大加载字符串100
TCHAR szTitle[MAX_LOADSTRING]=文本(“测试标题”);
TCHAR szWindowClass[MAX_LOADSTRING]=文本(“测试WindowClass”);
LRESULT回调WndProc(HWND HWND,UINT消息,WPARAM WPARAM,LPARAM LPARAM)
{

std::cout废弃所有调试输出。它不会在任何地方显示有意义的值。仅在非常特定的点返回有意义的值,在各自的API文档中有详细说明。任何交错代码都会使结果变得无意义。
cout Oops!对不起……我是编程新手,我只想编写一个控制台应用程序和此应用程序无法接收windows消息。请阅读。windows消息示例列出了键盘消息。代码检查
WM\u COPYDATA
。它们之间没有重叠。正在查找其中一个或多个有不同的解决方案。您在寻找哪种解决方案?更重要的是,为什么需要发现这些消息?您将如何处理这些信息?键盘消息仅发送到具有输入焦点的窗口。隐藏和仅消息的窗口不适用于此。如果要在后台捕获键盘输入,请必须通过
SetWindowsHookEx()
使用键盘挂钩,或通过
registerarWinputDevices()
使用原始输入API。如果要捕获其他人窗口的消息,请通过
SetWindowsHookEx()使用消息挂钩
@CodeLamb你好,请告诉我答案是否对你有用。你好,谢谢你的反馈。但我发现我只能通过
CreateWindowEx()
获得Windows消息。有关详细信息,请参阅我的电子邮件。
SendMessage(messageWindow,WM_CHAR, (WPARAM)0x41, (LPARAM)0);