| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > запустить приложение и нажать несколько кнопок |
| Автор: Fly1410 24.8.2008, 14:33 | ||||
| Надо сделать следующее открыть приложение и в нем нажать несколько кнопок. Для простоты возьмем notepad и в нем наберем что-нибудь. Я делаю так
Никакого эффекта от второй строчки нет. Почему? Как можно это сделать? Такое тоже не работает (конечно, приложение запущено и его хендлер находиться)
|
| Автор: THandle 24.8.2008, 17:04 | ||
| Fly1410, Во-первых посмотри что возвращает ShellExecute: http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx Во вторых: Окно может еще не создастся, лучше сделать небольшую задержку. В-третьих: Посылать надо не главному окну, а текстовому полю в нем находящемуся
|
| Автор: Fly1410 25.8.2008, 00:40 |
| Спасибо большое за ответ. Цель у меня такая открыть приложение нажать ctrl + p (открыть диалоговое окно печати) и нажать enter (отправить на печать). Как можно это сделать? |
| Автор: Riply 25.8.2008, 00:55 |
| Маленькие IMHO А, может, не стоит смотреть про ShellExecute, а сразу разбраться с CreateProcess ? Это даст нам довольно существенные преимущества: Во-первых, уходим от всяких сакраментальных чисел типа 100 в Sleep(100) и заменяем это безобразие на WaitForInputIdle ( Уж не говоря о том, что ста милисекунд может и не хватить (например, BDS 2006 Во вторых, дает возможность вести поиск окна определенного процесса связкой ( Create_Toolhelp32Snapshot(TH32CS_SNAPTHREAD, ..) + EnumThreadWindows + EnumChildWindows ) гораздо эффективнее, чем FindWindow, уж не говоря о куче неоднозначностей и двусмысленностей которые мы получали вместе с FindWindow. (В "связке" они тоже могут быть, но несравнимо меньше И напоследок, это даст нам возможность дожидаться реакции окна на нашу предыдущую команду, перед посылкой следующей. Что часто бывает очень немаловажно |
| Автор: Fly1410 25.8.2008, 23:00 |
| Спасибо большое |
| Автор: THandle 26.8.2008, 09:04 |
| Fly1410, если вопрос решен, то поставь теме галочку "Пометить как решённый" |