|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.06.2013, 08:48 | #1 |
Пользователь
Регистрация: 20.07.2012
Сообщений: 11
|
EnumThreadWindows
Код:
|
27.06.2013, 08:58 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
После запуска процесса проходит какоето время, прежде чем у процесса появятся окна.
Смотрите в сторону WaitForInputIdle() но даже это не даст 100% гарантии. |
27.06.2013, 09:12 | #3 |
Пользователь
Регистрация: 20.07.2012
Сообщений: 11
|
И пусть.
EnumThreadWindows должен перечислять все окна, а не только то, которое мне нужно Если окно ещё не создано в консоли всё равно должно появиться "Я выполняюсь" |
27.06.2013, 11:37 | #4 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
и кстати она вообще не будет ничего делать, вы перепутали идентификатор потока с идентификатором процесса, функция принимает первое, а не втором. маны читать надо. http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx Цитата:
если окон нет у потока(или неверные параметры переданы) она ничего не сделает. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 27.06.2013 в 11:40. |
||
27.06.2013, 12:11 | #5 |
Пользователь
Регистрация: 20.07.2012
Сообщений: 11
|
Спасибо, Пепел Феникса, исправил.
С Калькулятором или Saints Row 3 работает на ура, а вот GTA не создаёт окно. Такое же с ним творится при вызове из BAT-файла. Наверное это из-за того, что GTA отключает Aero. Код:
Вот другой почти работающий код (окно создаётся и в GTA можно играть). Надо только получить hProcess. hWnd есть, processId есть: существует ли подходящая функция использующая известные величины? |
27.06.2013, 12:39 | #6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
хэндл на процесс получается или от CreateProcess как выше.
или открывая процесс через OpenProcess(ему нужен PID) GTA имеет окно, вопрос в другом как ищете. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
27.06.2013, 17:18 | #7 |
Пользователь
Регистрация: 20.07.2012
Сообщений: 11
|
А как искать? Экран моргнул, сообщил мне о переходе в упрощённый графический режим и всё. В диспетчере задач GTA можно найти лишь в процессах, но не в приложениях. Другие проги запускаются как надо
|
27.06.2013, 17:28 | #8 |
Пользователь
Регистрация: 20.07.2012
Сообщений: 11
|
!!!
Проблема решилась простым переносом моей программы в папку с GTA. Такое же решение и для BAT-файла (в нём тоже был вызов по полному пути). Почему так происходит исключительно с GTA? Другим программам без разницы где находится то, что их вызывает Последний раз редактировалось mf_fun_mf; 27.06.2013 в 19:32. |