![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Доброе время суток!
Суть заключается в том, чтобы найти окно запускаемой программы и изменить его заголовок на свой. Программы запускаю в TThread используя CreateProcess. Для получения списка окон использую EnumThreadWindows.
Проблема в том что это работает только с "оконными" программами. Почему не работает с консолями? Может нужен ещё какой-нибуть флаг в GetWindowLong? ![]() Это сообщение отредактировал(а) ЧеловекБорща - 1.10.2010, 20:51 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
До семерки консольными окнами владеет csrss.exe
-------------------- Обижено школьников: 8 |
|||
|
||||
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Я ищу окно запускаемой мною программы а не окна других процессов.
|
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
Консольное окно особое.
Например что происходит, когда консольная программа запускает другую (тоже консольную), а сама закрывается? Дочерний процесс будет спокойно работать со старой консолью. Это было бы невозможно, если бы консольное окно принадлежало потоку, работающему в рамках родительского процесса. По этой причине все консольные окна должны уметь жить дольше, чем поток. А значит их нельзя получить при перечислении окон потока Это сообщение отредактировал(а) bems - 1.10.2010, 21:20 -------------------- Обижено школьников: 8 |
|||
|
||||
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
эмм а как тогда быть? Как найти консольное окно и определить его принядлежность к процессу?
|
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
ЧеловекБорща, Сделай еще перед запуском AllocConsole и GetConsoleWindow. А потом запускай процесс, и он унаследует твою консоль
-------------------- Обижено школьников: 8 |
|||
|
||||
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Спасибо за подсказку, но непонимаю как реализовать..
Можно привести пример пожалуйста? ![]() Есть кусок кода:
Это сообщение отредактировал(а) ЧеловекБорща - 1.10.2010, 22:18 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
Добавлено через 14 минут и 46 секунд Или, если не желательно чтобы все процессы разделяли общею консоль, то: CreateProcess AttachConsole GetConsoleWindow FreeConsole Это сообщение отредактировал(а) bems - 2.10.2010, 07:12 -------------------- Обижено школьников: 8 |
|||
|
||||
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Что-то я недопонимаю..
суть заключается в том чтобы изменить заголовок окна консоли которую запускаю. что я делаю не так? |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
Вот, как-то так. Время в Sleep выбирай под свою задачу (можно и убрать, но тогда будешь вхолостую жечь такты в ожидании, пока процесс создаст консоль, и мозможно поменяешь заголовок еще до того как cmd установит свой) -------------------- Обижено школьников: 8 |
|||
|
||||
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
странно неработает..
Комментарием отмечено. Почему-то неработает.. |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
У меня работало. Err чему равно?
Добавлено через 3 минуты и 42 секунды откуда у calc.exe консоль? -------------------- Обижено школьников: 8 |
|||
|
||||
ЧеловекБорща |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 5.6.2010 Репутация: нет Всего: нет |
Err равно 31.
Calc.exe это не калькулятор, это консолька которую я положил в папку программы.
|
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
Сделай в теле цикла Code := 0 и скажи чему он равняется после выхода из цикла
-------------------- Обижено школьников: 8 |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
впрочем лучше присвой $FFFFFFFF
-------------------- Обижено школьников: 8 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |