delphi - 发送 WM_COMMAND 到 TMenuItem

标签 delphi winapi postmessage tmenuitem

在我的 Delphi 表单的 OnShow 方法中,我确定打开表单后必须自动打开一个对话框 - 并且我应该能够通过模拟单击菜单项来完成此操作。

但是,调用 menuitem.Click 在主窗体打开之前弹出对话框 - 这不是我想要的。

我希望这应该能做到我想要的,但我找不到要为“wparam”传递哪些参数来将点击发送到我的菜单项。

PostMessage(handle, WM_COMMAND, wparam, 0)

MSDN WM_COMMAND docs谈论 IDM_* 标识符,但它在 Delphi 中是如何出现的?

最佳答案

(我知道这是一个非常古老的问题,但尽管以某种方式得到了解决,但真正的问题确实没有得到解答。)
--

“TMenuItem”的命令项标识符位于 Command 中属性(property)。根据WM_COMMAND的documentation 'wParam' 的高位字为 '0',低位字为菜单标识符;

PostMessage(Handle, WM_COMMAND, MakeWParam(MyMenuItem.Command, 0), 0);

或者简单地;

PostMessage(Handle, WM_COMMAND, MyMenuItem.Command, 0);


对于弹出菜单项,会有细微的差别:VCL 使用不同的实用程序窗口处理弹出菜单的消息。全局PopupList变量的句柄位于其 Window 中属性(property);

PostMessage(PopupList.Window, WM_COMMAND, MyPopupMenuItem.Command, 0);

关于delphi - 发送 WM_COMMAND 到 TMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1259683/

相关文章:

delphi - GDI+ 在 TBitmap 上绘图

delphi - 在动态项目上释放鼠标按钮时关闭弹出窗口

c++ - 何时使用 DLL_PROCESS_VERIFIER 标志调用 DllMain?

python - 如何在未聚焦/最小化的窗口中模拟鼠标/键盘事件?

javascript - 在沙盒 iframe 中使用通用 JS 库

delphi - 为什么我的 TFrame "seeing"不是已发布的消息?

macos - 我可以使用 Delphi XE2 (v16) 轻松编译适用于 Mac OS X 的现有 Delphi 应用程序吗?

android - Delphi XE7 Firemonkey Android 5.1.1 应用程序在三星 Galaxy S7 上仅使用 TEdit 就崩溃

c++ - 为什么得到的MachineGuid看起来不像是GUID而是韩文?

javascript - Parent 中的 AddEventListener 和 iframe 中的 postMessage 不能一起工作