Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выгрузка WinApi перехватчика [D7, WinXP]


Страницы:   1 2 3 4 5 6 7 8 9

KygECHuK ©   (2008-08-26 10:33:00) 

занимаюсь автоматизированным тестированием, оформил плагин для перехвата отрисовки текста. он подменяет адресса к функциям в таблице импорта, в моём случае это textOut в GDI32.dll. Всё работает хорошо, вот только что при выгрузке перхватчика с некоторойй вероятностью появлятся ошибка доступа к памяти...

Возможно кто нибудь занимался подомной проблематикой и может что нибудь посоветовать...


Сергей М.   (2008-08-27 10:58:00) [141]


> ОТДЕЛЬНАЯ сторонняя система тетсирования


А как связан процесс этой системы тестирования с процессом АИС ?

Плагин-то твой, как я понимаю, грузится в АП процесса системы тестирования, а не в АП процесса АИС ..


> не спрашиваёте меня как это получается у разаработчиков


Не буду, я и так догадываюсь)


KygECHuK   (2008-08-27 10:47:00) [142]


> Но плагины-то эта система поддерживает, раз она грузит твой
> плагин ?


Плагины поддержеивает ОТДЕЛЬНАЯ сторонняя система тетсирования.

Естетественно есть способ получать данные не из интерфейса, но, как я утверждал раньше они могут отличаться от данных полученных непосредственно из интерфейса... не спрашиваёте меня как это получается у разаработчиков.


Сергей М.   (2008-08-27 10:36:00) [143]


> У АИС нет такой подсисетмы


Но плагины-то эта система поддерживает, раз она грузит твой плагин ?

Вот я и спрашиваю, нет ли в SDK документированныхспособов передать в плагин интересующую тебя инф-цию ..


KygECHuK   (2008-08-27 10:26:00) [144]


> А что, подсистема поддержки плагинов у этой самой "АИС"
> не позволяет передавать в плагины требуемую тебе инф-цию
> ?


У АИС нет такой подсисетмы - плагин для Системы теирования.
И большая часть жалоб и замечаний именно на отображении данных в интерфейсе, а у нашей "чудо - системы" эти значения могут отличаться от расчитанных или принятых... так что следующим этапом и будет сравнение таких между различнымы способами их вывода. Собственно говоря вот и понадобился таковой плагин.


Сергей М.   (2008-08-27 10:14:00) [145]

А что, подсистема поддержки плагинов у этой самой "АИС" не позволяет передавать в плагины требуемую тебе инф-цию ?


KygECHuK   (2008-08-27 10:03:00) [146]


> А что, собственно, ты тестируешь-то ?

АИС


>  Цель какая ?

найти всемозможный ошибки расчётов, вывода инвормации и передачи данных... то есть регресивное тестирование каждой новой версии продукта.
Данный  плагин необходим для сбора текстовой информации из элементов управления не просходящих от TWinControl


Сергей М.   (2008-08-27 09:46:00) [147]

А что, собственно, ты тестируешь-то ? Цель какая ?


KygECHuK   (2008-08-27 09:39:00) [148]


> Почем мне знать зачем оно тебе надо ?)


Действительно....
Надёжней будет приостонавливать все потоки кроме, того что восстанавливает адреса.

Ну а если мне потребуется взять основной поток, то я просто использую GetWindowThreadProcessId от требуемого окна, ибо Delphi и VCL

Вас интересует что я имею под понятием "основной поток"? Ну наверно тот поток в котором изначально инициализирован обработчик сообщений.


Сергей М.   (2008-08-27 08:17:00) [149]


> зачем мне определять ID ОСНОВНОГО треда текущего процесса?


Почем мне знать зачем оно тебе надо ?)

Цитирую тебя:


> функция используется в основномпотоке


> синхронизировать с основнымпотоком


Раз ты этим озаботился, значит ты все же как-то определяешь, что такой-то поток является именно основным, а не дополнительным ?

Вот я и спрашиваю как ты это делаешь)


KygECHuK   (2008-08-26 23:47:00) [150]


> Рассказывай как ты получил ID ОСНОВНОГО треда текущего процесса


* Чё то мне совсем сыкотно
а зачем мне определять ID ОСНОВНОГО треда текущего процесса? Или в этом есть принципиальный момент?


Сергей М.   (2008-08-26 22:58:00) [151]


> Предчуствие неладного


Уже радует ..

Рассказывай как ты получил ID ОСНОВНОГО треда текущего процесса


KygECHuK   (2008-08-26 22:41:00) [152]


> Ну вот получил ты Id тек.треда.Рассказывай про твои дальнейшие
> действия ..


* Предчуствие неладного
Беру текущий процесс и перечисляю все его потоки и сравниваю их Id c id текущего потока при помощи Toolhelp32...


Сергей М.   (2008-08-26 20:24:00) [153]


> предполагаю стоит вызвать GetCurrentThreadId внутри потока
> а по Id уже ориентироваться далее


Ну вот получил ты Id тек.треда.
Рассказывай про твои дальнейшие действия ..


KygECHuK   (2008-08-26 17:32:00) [154]


> Любопытно, а как ты определяешь, в каком потоке загружается/выгружается
> твой плагин-модуль ?Подозреваю, что логика твоя в этой части
> неверна ..


Я пока ничего не брался определять, только советуюсь как поступить дальше
с подомным исключением.
Но предполагаю стоит вызвать GetCurrentThreadId внутри потока а по Id уже ориентироваться далее.


Rouse_   (2008-08-26 17:31:00) [155]


> а как ты определяешь, в каком потоке загружается/выгружается
> твой плагин-модуль ?

Дык эта... тормозим все что не GetCurrentThreadId в нашем процессе и всего делов :)


Сергей М.   (2008-08-26 17:24:00) [156]

Любопытно, а как ты определяешь, в каком потоке загружается/выгружается твой плагин-модуль ?

Подозреваю, что логика твоя в этой части неверна ..


Сергей М.   (2008-08-26 17:21:00) [157]


> как тогда система реагирует на suspend


Система просто перестает выделять потоку кванты процессорного времени.
Соответственно ни одна машинструкция им не выполняется.


> что будет если такой поток востановить. он что будет переинициализован?


Нет, не будет.
Упрощенно говоря, система продолжит квантование потока. Поток возобновит выполнение машинструкций начиная с инструкции, следующей за той которая была исполнена поледней на момент предшествующей его приостановки системой.

Если приложение дельфийское и для реализации GUI-интерфейса оно использует исключительно VCL-формы/контролы, можно практически со 100%-й уверенностью утверждать, что вызовы ф-ции TextOut осуществляются в основном потоке.
Крайне маловероятно, что какому-то идиоту взбредет в голову месить в одном проекте VCL-формы/контролы и создание/работа с окнами/контролами непосредственно через WinAPI)

Впрочем, этот довольно легко выяснить.


KygECHuK   (2008-08-26 17:10:00) [158]


> Приложение-то дельфийское ?


Да


KygECHuK   (2008-08-26 17:09:00) [159]


> Разумеется не будут.

Что то я не понимаю...
А как тогда система реагирует на suspend
и что будет если такой поток востановить. он что будет переинициализован?

ЗЫ
 дико извиняюсь за свою некомпетентность в этой области


Сергей М.   (2008-08-26 17:05:00) [160]

Приложение-то дельфийское ?


Страницы:   1 2 3 4 5 6 7 8 9

Наверх

Титульная страница Поиск, карта сайта Написать письмо