c# - 如何打开任何窗口的上下文菜单?

标签 c# contextmenu sendmessage

如何打开窗口的上下文菜单(当您右键单击窗口的标题栏时出现的正常 Windows 上下文)。

我尝试过的事情(点击按钮)

ReleaseCapture();
SendMessage(this.Handle, WM_NCRBUTTONDOWN, 0, 0);
SendMessage(this.Handle, WM_RBUTTONUP, 0, 0);
SendMessage(this.Handle, WM_CONTEXTMENU, 0, 0);

还有这个:

ReleaseCapture();
SendMessage(this.Handle, WM_NCRBUTTONDOWN, HT_CAPTION, 0);
SendMessage(this.Handle, WM_RBUTTONUP, HT_CAPTION, 0);
SendMessage(this.Handle, WM_CONTEXTMENU, HT_CAPTION, 0);

最佳答案

要在窗口中打开系统上下文菜单,您可以按 Alt+Space。因此,在您的情况下,您可以将这些键发送到该窗口,该窗口应该会为您打开上下文菜单。

您使用 SendMessage 所做的部分实际上只发送一个通知,指示模拟右键单击的指定窗口。但鼠标所在的位置仍然很重要。

同样重要的是:如果您使用“SendKeys.Send”(对于 Windows 窗体),这只会影响当前事件的窗口。

关于c# - 如何打开任何窗口的上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29700078/

相关文章:

c# - 什么是正确的修饰符?

c# - 带委托(delegate)的 Linq 查询不更新变量

c# - 在列表中查找具有最低属性值的项目

c# - C# 的标准库是否有简单的方法来检查一个数字是否是另一个数字的幂?

javascript - 如何检测单击了超链接右键单击上下文菜单中的哪个选项?

c# - 在 C# 中发送消息

Java 安卓 :Send data from one thead to another thread

c# - WPF 数据网格行上下文菜单 - 禁用菜单项

c# - 如何在 Winforms 中更改 ToolStripItem 的选中状态?

c - 发送消息不起作用