-
> как тогда система реагирует на suspend
Система просто перестает выделять потоку кванты процессорного времени.
Соответственно ни одна машинструкция им не выполняется.
> что будет если такой поток востановить. он что будет переинициализован?
Нет, не будет.
Упрощенно говоря, система продолжит квантование потока. Поток возобновит выполнение машинструкций начиная с инструкции, следующей за той которая была исполнена поледней на момент предшествующей его приостановки системой.
Если приложение дельфийское и для реализации GUI-интерфейса оно использует исключительно VCL-формы/контролы, можно практически со 100%-й уверенностью утверждать, что вызовы ф-ции TextOut осуществляются в основном потоке.
Крайне маловероятно, что какому-то идиоту взбредет в голову месить в одном проекте VCL-формы/контролы и создание/работа с окнами/контролами непосредственно через WinAPI)
Впрочем, этот довольно легко выяснить.
-
Любопытно, а как ты определяешь, в каком потоке загружается/выгружается твой плагин-модуль ?
Подозреваю, что логика твоя в этой части неверна ..
-
> а как ты определяешь, в каком потоке загружается/выгружается
> твой плагин-модуль ?
Дык эта... тормозим все что не GetCurrentThreadId в нашем процессе и всего делов :)
-
> Любопытно, а как ты определяешь, в каком потоке загружается/выгружается
> твой плагин-модуль ?Подозреваю, что логика твоя в этой части
> неверна ..
Я пока ничего не брался определять, только советуюсь как поступить дальше
с подомным исключением.
Но предполагаю стоит вызвать GetCurrentThreadId внутри потока а по Id уже ориентироваться далее.
-
> предполагаю стоит вызвать GetCurrentThreadId внутри потока
> а по Id уже ориентироваться далее
Ну вот получил ты Id тек.треда.
Рассказывай про твои дальнейшие действия ..
-
> Ну вот получил ты Id тек.треда.Рассказывай про твои дальнейшие
> действия ..
* Предчуствие неладного
Беру текущий процесс и перечисляю все его потоки и сравниваю их Id c id текущего потока при помощи Toolhelp32...
-
> Предчуствие неладного
Уже радует ..
Рассказывай как ты получил ID ОСНОВНОГО треда текущего процесса
-
> Рассказывай как ты получил ID ОСНОВНОГО треда текущего процесса
* Чё то мне совсем сыкотно
а зачем мне определять ID ОСНОВНОГО треда текущего процесса? Или в этом есть принципиальный момент?
-
> зачем мне определять ID ОСНОВНОГО треда текущего процесса?
Почем мне знать зачем оно тебе надо ?)
Цитирую тебя:
> функция используется в основном потоке
> синхронизировать с основным потоком
Раз ты этим озаботился, значит ты все же как-то определяешь, что такой-то поток является именно основным, а не дополнительным ?
Вот я и спрашиваю как ты это делаешь)
-
> Почем мне знать зачем оно тебе надо ?)
Действительно....
Надёжней будет приостонавливать все потоки кроме, того что восстанавливает адреса.
Ну а если мне потребуется взять основной поток, то я просто использую GetWindowThreadProcessId от требуемого окна, ибо Delphi и VCL
Вас интересует что я имею под понятием "основной поток"? Ну наверно тот поток в котором изначально инициализирован обработчик сообщений.
-
А что, собственно, ты тестируешь-то ? Цель какая ?
-
> А что, собственно, ты тестируешь-то ?
АИС
> Цель какая ?
найти всемозможный ошибки расчётов, вывода инвормации и передачи данных... то есть регресивное тестирование каждой новой версии продукта.
Данный плагин необходим для сбора текстовой информации из элементов управления не просходящих от TWinControl
-
А что, подсистема поддержки плагинов у этой самой "АИС" не позволяет передавать в плагины требуемую тебе инф-цию ?
-
> А что, подсистема поддержки плагинов у этой самой "АИС"
> не позволяет передавать в плагины требуемую тебе инф-цию
> ?
У АИС нет такой подсисетмы - плагин для Системы теирования.
И большая часть жалоб и замечаний именно на отображении данных в интерфейсе, а у нашей "чудо - системы" эти значения могут отличаться от расчитанных или принятых... так что следующим этапом и будет сравнение таких между различнымы способами их вывода. Собственно говоря вот и понадобился таковой плагин.
-
> У АИС нет такой подсисетмы
Но плагины-то эта система поддерживает, раз она грузит твой плагин ?
Вот я и спрашиваю, нет ли в SDK документированных способов передать в плагин интересующую тебя инф-цию ..
-
> Но плагины-то эта система поддерживает, раз она грузит твой
> плагин ?
Плагины поддержеивает ОТДЕЛЬНАЯ сторонняя система тетсирования.
Естетественно есть способ получать данные не из интерфейса, но, как я утверждал раньше они могут отличаться от данных полученных непосредственно из интерфейса... не спрашиваёте меня как это получается у разаработчиков.
-
> ОТДЕЛЬНАЯ сторонняя система тетсирования
А как связан процесс этой системы тестирования с процессом АИС ?
Плагин-то твой, как я понимаю, грузится в АП процесса системы тестирования, а не в АП процесса АИС ..
> не спрашиваёте меня как это получается у разаработчиков
Не буду, я и так догадываюсь)
-
> А как связан процесс этой системы тестирования с процессом
> АИС ?
Опосредованно - симулирует сообщения от лица пользователя. т. е. для системы тестирования АИС черный ящик... с одной стороны очень сложно симулировать пользователя, а с другой можно находить концептуальные ошибки и создовать наиболее ёмкие тесты.
-
> для системы тестирования АИС черный ящик
Так а зачем же нужно перехватывать TextOut в процессе системы тестирования ? Не понимаю ..
> жалоб и замечаний именно на отображении данных в интерфейсе
Я так понял, что интерфейсе приложения АИС, а не интерфейсе приложения-тестера, которое грузит твой плагин ..
-
> Так а зачем же нужно перехватывать TextOut в процессе системы
> тестирования ? Не понимаю ..
Приходится его немного "сломать" не сисетму же распознования писать?
Ведь данные предоставляемые АИС во время тестирования влияют на его ход.
> Я так понял, что интерфейсе приложения АИС, а не интерфейсе
> приложения-тестера, которое грузит твой плагин ..
да именно, так, приложение - тестор чисто внутренний проект
Интерфейсное приложение - красиво звучит для этой АИС оно все вместе и в одном исполняемом файле.... весит до 60 mb.