【问题标题】:Why does Save As dialog block the sender?为什么另存为对话框会阻止发件人?
【发布时间】:2016-01-05 09:19:37
【问题描述】:

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

SendMessage(hWndOfNotepad, WM_COMMAND, SaveAsMenuItemId, IntPtr.Zero);
Console.log("Done!");

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

【问题讨论】:

  • 如果您想在不等待结果的情况下发送消息,可以使用 PostMessage。
  • 它有效。非常感谢!

标签: c# winapi notepad message-loop wm-command


【解决方案1】:

您的程序阻塞,因为文件对话框是一个模态对话框。您发送的消息是同步的,因此在完全处理之前不会返回。特别是当模态文件对话框关闭时。

如果您希望自动化其他程序,您应该使用平台自动化框架 UI Automation。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2011-08-16
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    相关资源
    最近更新 更多