Почему диалоговое окно "Сохранить как" блокирует отправителя?
Цель моей программы - вызвать диалоговое окно "Сохранить как" в блокноте с помощью пункта "Сохранить как" в меню блокнота.
SendMessage(hWndOfNotepad, WM_COMMAND, SaveAsMenuItemId, IntPtr.Zero);
Console.log("Done!");
Когда вы запустите приведенный выше код, появится диалоговое окно "Сохранить как" в блокноте, и на консоли появится сообщение "Готово!". пока пользователь не нажмет кнопку "Сохранить". Почему моя программа должна ждать? Как этого избежать?
1 ответ
Решение
Ваша программа блокируется, потому что диалоговое окно файла является модальным. Отправленное вами сообщение является синхронным и поэтому не возвращается, пока оно не будет полностью обработано. В частности, когда диалоговое окно модального файла закрывается.
Если вы хотите автоматизировать другие программы, вам следует использовать платформу автоматизации платформы, UI Automation.