fut*_*lib 7 c++ windows winapi ipc console-application
我创建了一个简单的Win32控制台应用程序,它创建一个隐藏的仅消息窗口并等待消息,完整代码如下所示.
#include <iostream>
#include <Windows.h>
namespace {
LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_COPYDATA)
std::cout << "Got a message!" << std::endl;
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
}
int main()
{
WNDCLASS windowClass = {};
windowClass.lpfnWndProc = WindowProcedure;
LPCWSTR windowClassName = L"FoobarMessageOnlyWindow";
windowClass.lpszClassName = windowClassName;
if (!RegisterClass(&windowClass)) {
std::cout << "Failed to register window class" << std::endl;
return 1;
}
HWND messageWindow = CreateWindow(windowClassName, 0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, 0, 0);
if (!messageWindow) {
std::cout << "Failed to create message-only window" << std::endl;
return 1;
}
MSG msg;
while (GetMessage(&msg, 0, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有收到来自其他应用程序的任何消息.GetMessage()只是块,永远不会回来.我FindWindowEx()在发送消息的应用程序中使用相同的类名,然后找到窗口.只是信息显然从未收到过.
我在这里做错了吗?什么是可以接收窗口消息的最小应用程序?
用户界面权限隔离可能会阻止您的邮件.在这种情况下,您可以使用该ChangeWindowMessageFilterEx()函数来允许WM_COPYDATA消息通过.
| 归档时间: |
|
| 查看次数: |
9687 次 |
| 最近记录: |