Страница: 1 |
Страница: 1 |
Вопрос: Хэндл окна
Добавлено: 29.05.11 13:53
Автор вопроса: @lex
Запущено Х калькуляторов (для примера). Моя программа запускает еще один. Как получить хэндл окна именно того калькулятора, который запущен ей?
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
@lex
Вопросов: 14
Ответов: 262
Профиль | | #1
Добавлено: 29.05.11 14:31
Один способ придумался... Но что-то какой-то уж слишком он извращенный, ИМХО.
Запускать Калькулятор (опять же, для примера) не тупо Shell'ом, а через CreateProcess, потом брать его PID, EnumWindows'ом перебрать все окна, и выбрать по PID'у нужное.
Может кто-то подскажет что-то более "умное"? )
Номер ответа: 2
Автор ответа:
@lex
Вопросов: 14
Ответов: 262
Профиль | | #2
Добавлено: 29.05.11 15:30
Даже в "придуманном" способе возникает трабла, и не могу понять почему.
Получаем в pInfo.dwThreadId нужный PID. Вроде все ок, можно перечислять окна и сравнивать. А хер. Если взять, и получить PID запущенной программы другим способом, например:
То PID2 ни разу не совпадает с pInfo.dwThreadId. Почему? Что я делаю не так? -_-
Номер ответа: 3
Автор ответа:
@lex
Вопросов: 14
Ответов: 262
Профиль | | #3
Добавлено: 29.05.11 15:36
А, все понял. Я мудак. Мне нужен не pInfo.dwThreadId, а pInfo.dwProcessId. Но все еще интересует более "умный" способ решения. Если он существует.)
Номер ответа: 4
Автор ответа:
@lex
Вопросов: 14
Ответов: 262
Профиль | | #4
Добавлено: 29.05.11 15:44
Да хотя пофиг, меня и этот вполне устраивает. Всем спасибо, тему можно закрывать, лол.
Сам себе форум >.<
Номер ответа: 5
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #5
Добавлено: 29.05.11 19:16
Тут есть, помоему...
http://vbnet.ru/forum/show.aspx?id=215951
Номер ответа: 6
Автор ответа:
Александр
Вопросов: 0
Ответов: 1
Профиль | | #6
Добавлено: 29.05.11 20:05
Да есть
Номер ответа: 7
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #7
Добавлено: 29.05.11 21:36
суть примерно та же
Номер ответа: 8
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #8
Добавлено: 29.05.11 22:36
Может ошибаюсь, но по-моему Shell чего-то возвращает.
попробуйте
Ret=Shell ""
Номер ответа: 9
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #9
Добавлено: 29.05.11 22:41
Shell возвращает хендл процесса, не так ли?..
Номер ответа: 10
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #10
Добавлено: 29.05.11 22:54
ну пример я уже дал.
shell возвращает Process ID
По нему ищется ближайшее окно.
Номер ответа: 11
Автор ответа:
@lex
Вопросов: 14
Ответов: 262
Профиль | | #11
Добавлено: 29.05.11 23:40
Хм... Спасибо. Понятия не имел, что Shell возвращает Process ID. Х_х
Номер ответа: 12
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #12
Добавлено: 30.05.11 01:49
Код, кстати, не идеальных, может не во всех случаях окно находить...
Номер ответа: 13
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #13
Добавлено: 30.05.11 17:28
Блин, спасибо ребят за вопрос, буду знать как делать.
Номер ответа: 14
Автор ответа:
MISTER X
ICQ: 463865965
Вопросов: 31
Ответов: 190
Web-сайт:
Профиль | | #14
Добавлено: 04.06.11 20:27
@lex, а монолог ниче получился :D