问题标签 [wm-command]

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 投票
2 回答
3814 浏览

ui-automation - 如何以编程方式在 Windows 中选择弹出菜单项?

我有一个应用程序,我正在为其编写一个小向导。它通过将鼠标移动到适当的按钮、菜单并单击它们来自动化应用程序的一小部分,以便用户可以观看。

到目前为止,它将鼠标移动到树项目并发送右键单击。通过 TrackPopupMenu 弹出一个菜单。接下来,我将鼠标移动到弹出菜单上的相应项目。我不知道如何选择菜单项。

我尝试将左键单击发送到菜单的所有者窗口,尝试将 WM_COMMAND 发送到菜单的所有者等。没有任何效果。

我想菜单本身就是一个窗口,但我不知道如何从我拥有的 HMENU 中获取它的 HWND。

关于如何 PostMessage 单击弹出菜单有什么想法吗?

PS 我使用单独的线程来驱动鼠标和发布消息,所以 TrackPopupMenu 同步没有问题。

0 投票
2 回答
1509 浏览

winapi - Windows 键盘加速器和子窗口

我已经使用 C 和 Windows API 创建了一个 Windows GUI 程序,并且我希望该程序利用键盘加速器。我已经设置了一些可以正常工作的加速器,但是当焦点转到我的程序主窗口的子窗口时,例如列表视图控件或状态栏控件,键盘加速器似乎正在转换为 WM_COMMAND 消息对于子窗口而不是主窗口。因此,当焦点位于子控件上时,我在主窗口的 WndProc 中对相应 WM_COMMAND 消息的处理将被忽略。

我应该如何解决这个问题?

0 投票
4 回答
5865 浏览

c++ - 什么消息导致按钮发送 WM_COMMAND 消息

我知道一个按钮在被点击时会向它的父级发送 WM_COMMAND 消息,但是它接收到什么消息使它发送这个消息?我正在覆盖按钮的默认 WndProc,并且该按钮没有收到 WM_COMMAND 消息,因此我需要知道是什么消息导致按钮发送 WM_COMMAND 消息,以便我可以复制该功能。

0 投票
1 回答
1397 浏览

c++ - Win32 API C++,未使用 WM_COMMAND 接收标识符

我是一个相当新的 Win32 API C++ 程序员。

我刚刚学会了如何创建菜单并附加它们 Window 实例。我遇到的麻烦是,我的 MenuItem 标识符似乎没有发送。

例如:我的菜单项 File>>Exit 应该在 WM_COMMAND 中发送标识符 ID_FILE_EXIT。但是在某个地方,我的 MSG 开关没有收到该标识符;即我的菜单项不起作用。

资源.h:

资源.rc:

main.cpp(extract) - msg switch 语句:

0 投票
0 回答
133 浏览

c# - 有什么方法可以捕获全局 WM_COMMAND 消息?

我正在编写一个需要使用消息的 WPF 应用程序,例如

  • APPCOMMAND_MEDIA_PLAY_PAUSE
  • APPCOMMAND_MEDIA_NEXTTRACK
  • ETC...

我需要从所有正在运行的线程(平均全局)中捕获这些消息。如何在全球范围内捕获这些消息?

0 投票
1 回答
521 浏览

c++ - 如何从窗口函数外部访问 wm_command

我正在使用类构建我的第一个 c++ 项目(试图获得更多经验),现在我被卡住了。我需要确定从我的计算器应用程序中按下了哪个按钮。我设置项目的方式是:

Windows.cpp

应用程序.h

应用程序.cpp:

我考虑向 Calculator 类添加一个函数来确定是否按下了按钮,但我不确定如何访问 wm_command,或者是否有其他方式。然后我可以调用 calc.IsButtonPressed()。

0 投票
1 回答
670 浏览

visual-c++ - 如何识别 WM_COMMAND 消息的发送者?

我正在使用 VS 2010 c++。我有一个对话框窗口,其中包含一组 126 个相同的按钮控件,它们共享相同的控件 ID 值。
当一个按钮被点击并且主机对话窗口接收到 WM_COMMAND 消息时,对话窗口如何识别哪个按钮被按下?我可以使用 126 个不同的控件 ID 值,但我希望更简洁一些。
任何人都可以帮忙吗?

0 投票
2 回答
2962 浏览

c - WinAPI 中的菜单:我对 WM_COMMAND 使用 LPARAM 还是 WPARAM?

我最近开始自学 WinAPI,所以请耐心等待。

编译器:TDM-GCC 4.9.2
操作系统:Windows 8.1 64 位

我最近学习了如何使用资源创建菜单。关于这一点,我注意到处理菜单的 WM_COMMAND 消息有些奇怪。MSDN 文档告诉我,如果我想处理从菜单发送的消息,命令项 ID 可以在 WPARAM 的低位字中找到;所以我假设我的窗口过程中的代码如下所示:

但是,我注意到菜单中的命令项不起作用。经过一些调试,我发现 wParam 始终为 0,而我的 ID 实际上在 lParam 中!我对以下代码进行了快速更改:

它有效!

我的问题:为什么?
为什么文档说它在 wParam 中,而对我来说它在 lParam 中?

另外,如果有帮助,这是我的 resource.rc 和 resource.h 文件:

“资源.h”:

“资源.rc”:



编辑 7/23/15:已
解决。我的窗口程序有错误的签名。不敢相信这是如此微不足道的事情!谢谢,克雷姆诺!

0 投票
1 回答
64 浏览

c# - 为什么另存为对话框会阻止发件人?

我的程序的目的是通过记事本菜单中的另存为项目触发记事本的另存为对话框。

运行上面的代码时,记事本的另存为对话框出现,控制台将记录“完成!” 直到用户单击保存按钮。为什么我的程序必须等待?如何避免?

0 投票
1 回答
380 浏览

c# - 有没有办法跟踪其他进程的 wm_messge(或 wm_command)?

我的电脑感染了病毒,每次打开谷歌浏览器都会关闭它。我尝试了在互联网上找到的所有相关工具和恶意软件删除,但问题仍然存在。

现在我想创建一个工具(使用 C#.NET)来跟踪其他进程(或者至少是一个我要用我的工具共进午餐的 chrome 进程)wm_message(s)(或 wm_command),以查看哪个进程发送 wm_message 以关闭它,然后将其删除。

有什么方法可以让进程接收到 wm_messages 吗?