Конференция "WinAPI" » Выгрузка WinApi перехватчика [D7, WinXP]
 
  • Сергей М. © (26.08.08 17:21) [20]

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


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


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


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

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

    Впрочем, этот довольно легко выяснить.
  • Сергей М. © (26.08.08 17:24) [21]
    Любопытно, а как ты определяешь, в каком потоке загружается/выгружается твой плагин-модуль ?

    Подозреваю, что логика твоя в этой части неверна ..
  • Rouse_ © (26.08.08 17:31) [22]

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

    Дык эта... тормозим все что не GetCurrentThreadId в нашем процессе и всего делов :)
  • KygECHuK © (26.08.08 17:32) [23]

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


    Я пока ничего не брался определять, только советуюсь как поступить дальше
    с подомным исключением.
    Но предполагаю стоит вызвать GetCurrentThreadId внутри потока а по Id уже ориентироваться далее.
  • Сергей М. © (26.08.08 20:24) [24]

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


    Ну вот получил ты Id тек.треда.
    Рассказывай про твои дальнейшие действия ..
  • KygECHuK © (26.08.08 22:41) [25]

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


    * Предчуствие неладного
    Беру текущий процесс и перечисляю все его потоки и сравниваю их Id c id текущего потока при помощи Toolhelp32...
  • Сергей М. © (26.08.08 22:58) [26]

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


    Уже радует ..

    Рассказывай как ты получил ID ОСНОВНОГО треда текущего процесса
  • KygECHuK © (26.08.08 23:47) [27]

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


    * Чё то мне совсем сыкотно
    а зачем мне определять ID ОСНОВНОГО треда текущего процесса? Или в этом есть принципиальный момент?
  • Сергей М. © (27.08.08 08:17) [28]

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


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

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


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


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


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

    Вот я и спрашиваю как ты это делаешь)
  • KygECHuK © (27.08.08 09:39) [29]

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


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

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

    Вас интересует что я имею под понятием "основной поток"? Ну наверно тот поток в котором изначально инициализирован обработчик сообщений.
  • Сергей М. © (27.08.08 09:46) [30]
    А что, собственно, ты тестируешь-то ? Цель какая ?
  • KygECHuK © (27.08.08 10:03) [31]

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

    АИС


    >  Цель какая ?

    найти всемозможный ошибки расчётов, вывода инвормации и передачи данных... то есть регресивное тестирование каждой новой версии продукта.
    Данный  плагин необходим для сбора текстовой информации из элементов управления не просходящих от TWinControl
  • Сергей М. © (27.08.08 10:14) [32]
    А что, подсистема поддержки плагинов у этой самой "АИС" не позволяет передавать в плагины требуемую тебе инф-цию ?
  • KygECHuK © (27.08.08 10:26) [33]

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


    У АИС нет такой подсисетмы - плагин для Системы теирования.
    И большая часть жалоб и замечаний именно на отображении данных в интерфейсе, а у нашей "чудо - системы" эти значения могут отличаться от расчитанных или принятых... так что следующим этапом и будет сравнение таких между различнымы способами их вывода. Собственно говоря вот и понадобился таковой плагин.
  • Сергей М. © (27.08.08 10:36) [34]

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


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

    Вот я и спрашиваю, нет ли в SDK документированных способов передать в плагин интересующую тебя инф-цию ..
  • KygECHuK © (27.08.08 10:47) [35]

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


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

    Естетественно есть способ получать данные не из интерфейса, но, как я утверждал раньше они могут отличаться от данных полученных непосредственно из интерфейса... не спрашиваёте меня как это получается у разаработчиков.
  • Сергей М. © (27.08.08 10:58) [36]

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


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

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


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


    Не буду, я и так догадываюсь)
  • KygECHuK © (27.08.08 11:21) [37]

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


    Опосредованно - симулирует сообщения от лица пользователя. т. е. для системы тестирования АИС черный ящик... с одной стороны очень сложно симулировать пользователя, а с другой можно находить концептуальные ошибки и создовать наиболее ёмкие тесты.
  • Сергей М. © (27.08.08 11:35) [38]

    > для системы тестирования АИС черный ящик


    Так а зачем же нужно перехватывать TextOut в процессе системы тестирования ? Не понимаю ..


    > жалоб и замечаний именно на отображении данных в интерфейсе


    Я так понял, что интерфейсе приложения АИС, а не интерфейсе приложения-тестера, которое грузит твой плагин ..
  • KygECHuK © (27.08.08 11:47) [39]

    > Так а зачем же нужно перехватывать TextOut в процессе системы
    > тестирования ? Не понимаю ..


    Приходится его немного "сломать" не сисетму же распознования писать?
    Ведь данные предоставляемые АИС во время тестирования влияют на его ход.


    > Я так понял, что интерфейсе приложения АИС, а не интерфейсе
    > приложения-тестера, которое грузит твой плагин ..

    да именно, так, приложение - тестор чисто внутренний проект

    Интерфейсное приложение - красиво звучит для этой АИС оно все вместе и в одном исполняемом файле.... весит до 60 mb.
 
Конференция "WinAPI" » Выгрузка WinApi перехватчика [D7, WinXP]
Есть новые Нет новых   [134435   +33][b:0.001][p:0.001]