![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
в общем, написал прогу, она автоматизирует работу одного приложения, тоесть отлавливает окна и реагирует на них, всё это скрытно, всё бы хорошо, поидее должно работать чётко и качественно, но есть одно но... то приложение, что я автоматизирую делает чтото лишнее или просто чтото скрытое(я не знаю что именно), что сильно влияет на работу всей системы виндоус - активное окно то деактивируется, то снова активируется и всё подглючивает(((
снял видео для наглядности на окне блокнота - http://slil.ru/26086308 на видео я ничего не делаю, всё делает то приложение..., в коде моей проги всё ок, с другими программами всё хорошо, а вот с этой такая муть происходит... может кто сможет помочь в этом? был бы преочнь благодарен в голову пришла мысль игнорить процесс, тоесть все окна, все действия от глючащего процесса.. просто не обращать на них внимания, но как тогда будет работать программа...(( и совсем не представляю как такое можно осуществить... может у когонить есть идеи по этому поводу? если что, то вот часть кода, где создаю процесс:
с окном, после запуска, работает хук из dll... |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 15 Всего: 95 |
сейчас тут соберутся телепаты и попробуют угадать, что же ты делаешь в своем хуке и каким образом программа
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
ок, объясню поподробней
запускается процесс с параметром, после появляется окно этого процесса, и окно это перехватывается/проверяется HCBT_ACTIVATE хуком по имени окна, эта часть кода у меня выглядит так:
даже если не использовать мою прогу, просто запускать то самое приложение и делать всё руками, то есть небольшой скачок - винда подглючивает, "верхнее" окно то активно то неактивно, но это длиться 1-2 секунды, а моя прога это делает в цикле и достаточно быстро, потому винда просто начинает жестоко глючить... и что с этим - делать я ваще беспонятия((( вот, надеюсь более понятно объяснил |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 15 Всего: 95 |
на самом деле, было бы понятней, если бы ты прикрепил максимально обрезанный исходник, где наблюдается проблема.
Есть подозрение, что при нажатии на кнопку в этом приложении осуществляется какая-то работа по активизации окна (к примеру, есть такой финт по выводу окна на Foreground - минимизация и максимизация без анимации). Тогда твой хук может активироваться в бесконечном цикле. Если есть возможность - попробуй отлавливать не HCBT_ACTIVATE, а к примеру HCBT_CREATEWND или что-то другое - будет ли наблюдаться подобная проблема?... Если нужно именно HCBT_ACTIVATE - тогда надо смотреть\оптимизировать конкретно код. -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| HiVeR |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
знать бы где проблема, попозже если что выложу
вот как это у меня в коде, вроде всё верно)
наблюдал такой факт - некоторые окна(всего перехватываю 6 окон), судя по логу, появляются несколько раз, хотя должны поидее лишь один... в логе постоянно записи "в двойном кол-ве", 2 окна перехватываются норм, а остальные 4 якобы дважды, странно...
попробую, а вообще мне кажется что дело в самом приложении и от моей проги тут ничего не зависит, но не уверен, буду пробовать) спасибо за ответы Это сообщение отредактировал(а) HiVeR - 25.8.2008, 22:54 |
||||||||||
|
|||||||||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 3 Всего: 11 |
а самый главный вопрос, зачем все это?
ну а если так сильно хочется управлять чужим приложением, да еще и скрытно, (зачем же тогда хиде) то 1. окно с параметром SW_HIDE, не совсем полноценное окно!, особо если программист контролирует состояние окна, ну такое как скрытие и минимизация... отсюда не лучше ли просто окна "пихать" за пределы экрана (эллементарно сменив координаты положения окна), чем скрывать их? 2. ну и на самый крайний случай можно вообще загнать в другой рабочий стол |
|||
|
||||
| HiVeR |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
программа должна работать корректно и прога это очень важна для меня
возможно пихать их куда подальше это хорошо), но проблема не решилась... нашёл в чём дело, всё дело в
отсюда всё сразу становится ясно: 1.
2. пробовал при создании процесса окно сувать на задний план и не позволял ему брать фокус, делал так:
с блокнотом всё ок, встаёт на задний план и никому не мешает, а если заменить 'notepad.exe' на мой процесс, то на всё просто пофиг, окно проца сразу становиться активным...( вопрос в том, как убрать/предотвратить или сделать "невлияющим" тот финт с минимизацией и максимизацией окна? |
||||||||||
|
|||||||||||
| Virtuals |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 3 Всего: 11 |
я имел ввиду что просто перехватывать момент отображения окна и задавать ему размеры за экраном
и все дальше спокойно с ним работать, и глаза не мозолит и не трогаем функционал окна |
||||
|
|||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
Virtuals, не помогло:(, проблема не с замозоливанием глаз, а с тем что процесс мешает работе виндоус, окна того процесса, что я перехватываю, получают фокус и активируются не смотря ни на что, я пробовал и hide и SetWindowPos - нифига, окна этого процесса ведут себя как хотят...
повторюсь, скорее всего это связано с
но что с этим делать я беспонятия, HCBT_CreateWND не могу использовать, т.к он работает со всем иначе и работает не так как хотелось бы, в общем он глючит... наверное можно поставить ещё один хук - на минимизацию/максимизацию окна, но не думаю что это есть хорошо... ama_kid, мож ты знаешь как нужно оптимизировать код, чтобы всё ок было? если нужно выложу весь урезанный до максимума код, но сомневаюсь, что он поможет... сори что поздно ответил |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 3 Всего: 11 |
HiVeR, ну у тебя однозначно проблемы в логике перехвата, а может плюнуть на все эти хуки и тупо свалить в другой стол вместе с процессом управления?
имхо самый надежный способ, и ничего прятать и пререхватывать не нужно
ну и SwitchDesktop если захочеш позырить как там дела ЗЫЗЫ вещь абалденная, но как ни странно мало кто про нее помнит |
|||
|
||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
Virtuals, идея куль!
но вот перехватывать всё равно нужно(, надо же как то реагировать на появляющиеся окна, хотя мож я недопонял малёк), и всё таки, перехваты будут на другом рабочем столе? объясни плиз поподробнее про создание второго стола и просто, что он из себя представляет?..или мож есть что почитать, чтото гугл не кишит информацией(
Это сообщение отредактировал(а) HiVeR - 31.8.2008, 16:57 |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 3 Всего: 11 |
HiVeR,
ну если упрощенно то винда > терминальные сессии > множество оконных станций (WindowStation) > множество столов (Desktop) (все это на НТ платформе) пример использования: в винде где жмеш цтрл алт дел и логин пароль это стол с именем Winlogon а вот где юзер обычно живет это уже Default все именно в целях изоляции и безопасности! оконные хуки работают именно в пределах стола! я так консольный сервак контры запускал он периодически вылетал с ав вот и ловил окошко и жал Ок, после перезапускал ЗЫ смотри личку, код здесь выкладывать не буду по политическим соображениям, иначе придется боротся с новым классом вирусов имхо |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |