为什么“另存为”对话框会阻止发件人?

时间:2016-01-05 09:19:38

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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