问题标签 [window-messages]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3204 浏览

winapi - Win32:如何向 Windows 中不同用户运行的进程发布消息?

我们运行两个应用程序,每个应用程序都使用 RegisterWindowMessage() 注册相同的消息:应用程序 A 作为普通用户,应用程序 B 作为管理员在机器上的同一用户会话中,并且这些应用程序将这个消息发送给另一个。当 A 和 B 作为同一个用户运行时,一切都很好,我们能够使用 PostMessage() 消息进行通信。现在,由于应用程序 B 以管理员身份运行,消息不再通过。我们对于它可以做些什么呢?

这种情况是否要求我们使用其他机制(消息除外)?

0 投票
1 回答
316 浏览

c# - 给定窗口句柄,监听 Handle Rect Change 事件

我有一个窗口的句柄(HWND),我想监听边界矩形的变化。我可以GetWindowRect(HWND hWnd, LPRECT lpRect);每隔 n 毫秒检查一次,但这似乎真的很浪费。

是否有我可以收听的 Windows 消息?

窗口句柄不是我拥有的窗口。

0 投票
3 回答
2795 浏览

c++ - 使用 PostMessage 与 SendNotifyMessage 广播到拥有的窗口

最近我发现了两个 Win32 API 调用“PostMessage”和“SendNotifyMessage”之间的奇怪区别(至少在 Win7 64 位 SP1 上注意到):另一个进程的拥有的顶级窗口似乎没有接收广播的消息(HWND_BROADCAST)与“ PostMessage”,而它在其 WndProc 中接收使用“SendNotifyMessage”广播的消息。

已在调用“RegisterWindowMessage”的帮助下注册了发送的消息。

即使使用 Spy++,使用“PostMessage”时我也看不到消息到达。另外,我想提一下,如果我使用“PostMessage”将消息直接发送到特定的 HWND,它会按预期到达。所以看起来“PostMessage”的windows内部实现只是在迭代执行广播时跳过了我的窗口。

阅读各自的 MSDN 文档,我看不到任何关于这种差异的声明,我想知道这是否是 PostMessage 或 SendNotifyMessage 中的错误,以及我是否可以依靠 SendNotifyMessage 继续在未来版本的 Windows 中显示此行为。

那么有人有一个合理的解释,为什么这两个函数在这种情况下对广播的处理方式不同?

另外,我想问一下是否有任何方法仍然可以使用 PostMessage 广播到拥有的顶级窗口,因为我更愿意发布消息,因为我不想跳过消息队列(这就是 SendNotifyMessage做)。

如果您好奇我为什么要访问顶级拥有的窗口:在 WPF 中,通过使它们拥有具有隐藏所有者窗口的顶级窗口,窗口从任务栏(Window.ShowInTaskbar 属性)中隐藏。

非常感谢您对此主题的任何想法或评论。

附件:这里是一个显示行为的示例......只需构建它,然后启动它两次......第二个过程应该在第一个过程中显示一条消息。这里也是完整解决方案的链接,包括构建 EXE:链接到完整的 VS 解决方案

0 投票
2 回答
414 浏览

c++ - 当用户单击“取消”时如何确定 FindText 对话框已关闭

此代码生成简单的 FindText 对话框窗口,当用户单击右上角的 X 窗口关闭按钮时,WM_CLOSE 消息被发送到钩子过程,但是当单击“取消”按钮时,不会产生消息以指示该窗口不再存在。

0 投票
3 回答
1972 浏览

windows - CloseWindow和WM_CLOSE是什么关系

我目前有点困惑:WM_CLOSE::CloseWindow以任何方式“相关”还是完全不同的东西?

关闭窗口的文档根本没有提到 API 函数CloseWindow。应该CloseWindow真正称为“MinimizeWindow”还是我错过了什么?

0 投票
1 回答
612 浏览

.net - BroadcastSystemMessage 的调用永远不会完成

我正在BroadcastSystemMessage从 调用方法User32.dll。在一台 PC (Windows8 Pro) 上调用该方法,但调用永远不会结束。应用程序正在等待,但永远不会返回结果(也不是异常)。我在几台 Windows8 计算机上尝试过(不同的硬件,有/没有防病毒软件等),但这种行为在这些计算机上从未发生过。

目标计算机没有任何已安装或正在运行的应用程序,它会注册自定义消息。所以所有应用程序都应该忽略广播。

这种行为正确吗?我在 MSDN 中没有看到任何关于它的提及。怎么了?是否有一些正确的方法可以在超时后停止通话?

欢迎任何建议或提示。

代码是:

0 投票
1 回答
1872 浏览

c++ - 当模式对话框处于活动状态时,检测主应用程序窗口上的 WM_CLOSE 事件?

当模式对话框处于活动状态时,主应用程序窗口是否可以检测到 WM_CLOSE 事件?如果没有,是否有任何方法可以检测到 WM_CLOSE 事件,因为对话框的事件处理程序也没有检测到它。

要自己观察这种行为,请打开记事本的“关于”菜单,然后右键单击任务栏中的记事本图标并选择“关闭窗口”选项,它不会有任何效果。

有谁知道当模式窗口处于活动状态时捕获应用程序的 WM_CLOSE 事件的方法?

0 投票
1 回答
555 浏览

mfc - 子窗口中的 Windows 消息

我有一个包含子窗口的容器窗口 (CFrameWnd),如果我在子窗口上设置 spy++,在某些情况下我看不到任何消息传递。为什么?调节窗口间消息的系统是什么?我检查了所有窗口都已启用。

子窗口继承自 CDialog 并具有 WS_CHILD 样式

0 投票
1 回答
4787 浏览

c++ - WINAPI GetMessage HWND

我正在使用 Win32 API 创建窗口,这部分有问题:

我的问题是,当我尝试hwnd将要接收消息的第二个参数()更改为我之前制作的窗口时,它不起作用;例如,当我尝试关闭窗口时,它只会隐藏而不会关闭。

这是完整的代码:

0 投票
1 回答
143 浏览

c++ - Windows (C++) 上的窗口消息问题(延迟)

我的应用程序有问题。经过长时间的系统停机或睡眠窗口消息会延迟几秒钟!一旦窗口收到此消息,所有进一步的消息都会再次正常进行。我创建了一个手动调用的方法并像这样抛出窗口消息:

什么也没有变。接收消息似乎都是同样的问题,而不是发送消息。谁知道它可以连接什么?

(在从 Windows XP 到 Windows 8.1 的系统上测试。使用 C++ Builder 创建。在 x86 应用程序中编译)