Я пишу программное обеспечение с открытым исходным кодом для захвата и обработки необработанных событий мыши и клавиатуры. Когда событие записывается, я связываюсь с окном win32, чтобы точно спросить, что делать с событием (то есть передать его или потребить). На самом деле это очень похоже на HIDMacros.
Раздел, который в конечном итоге решает, использовать ли событие на самом деле в пространстве памяти, которое Я НЕ контролирую (то есть то, что запускает сама Windows). Это означает, что, к сожалению, у меня почти нет возможности отлаживать этот раздел кода. К счастью, это очень простой код, и мне еще не приходилось его отлаживать.
С другой стороны, у меня есть цикл событий Win32, работающий в своем собственном потоке, и обрабатывающий запросы, отправленные вышеупомянутым разделом кода. Таким образом, вышеприведенный раздел отправляет этому окну сообщение, он решает, что делать и возвращает ответ. Достаточно просто.
ПРОБЛЕМА заключается в следующем. Когда я присоединяю отладчик, останавливается только цикл событий окна win32. Другой код продолжает работать, поскольку он не находится в моей реальной памяти или процессе. И когда пользователь делает что-то вроде, о, скажем, нажатия F10 (чтобы перейти к следующей строке), зарегистрированный хук клавиатуры (1) поймает нажатие клавиши и (2) вызовет мое окно win32 для ответ. К сожалению, окно заморожено отладчиком. Конечный результат: я нажимаю F10, и Visual Studio никогда не получает мое нажатие клавиши. Visual Studio сама перестает отвечать на все вводимые данные, она зависает, и мне приходится самому убивать VS.
Теперь мне удалось обойти проблему SOMEWHAT, используя тайм-ауты, но это действительно раздражает (то есть очень ощутимо) и совсем не идеально. Я хотел бы знать, есть ли программный способ исключить конкретный поток из отладчика? Есть ли способ попросить отладчик VS НЕ останавливать выполнение определенного потока? Кроме этого, есть ли способ заставить сам отладчик выполнить определенное действие перед приостановкой нормального выполнения и снова после возобновления нормального выполнения?
Эта библиотека будет использоваться в других проектах. Мне бы очень понравилось, если бы люди не потеряли способность использовать клавиатуру во время отладки JUST, потому что решили связываться с МОЕЙ библиотекой. :) Любая помощь приветствуется, спасибо.