如何将WM_COMMAND消息发送给Delphi中的TMenuItem实现长尾?

2026-04-10 21:322阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计184个文字,预计阅读时间需要1分钟。

如何将WM_COMMAND消息发送给Delphi中的TMenuItem实现长尾?

在Delphi表单的OnShow方法中,我需要在打开表单后自动打开一个对话框。我可以通过模拟点击模拟menuitem来实现这个操作。但是,调用menuItem.Click会在主窗口体显示对话框之前打开对话框。

如何将WM_COMMAND消息发送给Delphi中的TMenuItem实现长尾?

在我的Delphi表单的OnShow方法中,我确定在打开表单后必须自动打开一个对话框 – 我应该可以通过模拟menuitem上的点击来完成此操作.

但是,调用menuitem.Click会在主窗体打开之前显示对话框 – 这不是我想要的.

我希望这应该做我想要的,但我找不到要通过“wparam”将点击发送到我的menuitem的参数.

PostMessage(handle, WM_COMMAND, wparam, 0)

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

也许您可以尝试在OnActivate事件中打开对话框?
我不确定OnActivate是否会在显示表单时再次被触发但是如果它可以使用:

procedure TForm1.FormActivate(Sender: TObject); begin Form2.ShowModal; Self.OnActivate := nil; end;

本文共计184个文字,预计阅读时间需要1分钟。

如何将WM_COMMAND消息发送给Delphi中的TMenuItem实现长尾?

在Delphi表单的OnShow方法中,我需要在打开表单后自动打开一个对话框。我可以通过模拟点击模拟menuitem来实现这个操作。但是,调用menuItem.Click会在主窗口体显示对话框之前打开对话框。

如何将WM_COMMAND消息发送给Delphi中的TMenuItem实现长尾?

在我的Delphi表单的OnShow方法中,我确定在打开表单后必须自动打开一个对话框 – 我应该可以通过模拟menuitem上的点击来完成此操作.

但是,调用menuitem.Click会在主窗体打开之前显示对话框 – 这不是我想要的.

我希望这应该做我想要的,但我找不到要通过“wparam”将点击发送到我的menuitem的参数.

PostMessage(handle, WM_COMMAND, wparam, 0)

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

也许您可以尝试在OnActivate事件中打开对话框?
我不确定OnActivate是否会在显示表单时再次被触发但是如果它可以使用:

procedure TForm1.FormActivate(Sender: TObject); begin Form2.ShowModal; Self.OnActivate := nil; end;