Почему диалоговое окно "Сохранить как" блокирует отправителя?

Цель моей программы - вызвать диалоговое окно "Сохранить как" в блокноте с помощью пункта "Сохранить как" в меню блокнота.

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

Когда вы запустите приведенный выше код, появится диалоговое окно "Сохранить как" в блокноте, и на консоли появится сообщение "Готово!". пока пользователь не нажмет кнопку "Сохранить". Почему моя программа должна ждать? Как этого избежать?

1 ответ

Решение

Ваша программа блокируется, потому что диалоговое окно файла является модальным. Отправленное вами сообщение является синхронным и поэтому не возвращается, пока оно не будет полностью обработано. В частности, когда диалоговое окно модального файла закрывается.

Если вы хотите автоматизировать другие программы, вам следует использовать платформу автоматизации платформы, UI Automation.

Другие вопросы по тегам