Итак, я недавно обнаружил это сам, я создал консольное приложение .NET, которое запускает процесс с помощью CMD.EXE, и столкнулся с проблемой взаимодействия Win32 с клавиатурой. Поэтому я запустил ранее проверенную утилиту Spy++, чтобы посмотреть, что происходит, и обнаружил, что я совершенно не могу контролировать очередь сообщений для своего приложения из нее.
Итак, согласно вопросу оператора:
"Есть ли способ запретить Spy++ доступ к очереди сообщений моего собственного пользовательского окна с помощью Windows API?"
Существует список ограниченных классов окон, встроенных в Spy++:
- SpyxxHk (предположительно, это собственный класс перехвата),
- #32768 (Контекстное меню),
- #32769 (Рабочий стол),
- ,
- ConsoleWindowClass (Командная строка)
Таким образом, если вы каким-либо образом привяжете свое приложение к этим классам, Spy++ будет отображать это сообщение о блокировке при попытке просмотра их сообщений, конечно, это может оказаться бесполезным, поскольку ограничивает только эти классы.
Ссылаясь на документацию MS:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd373640(v=vs.85).aspx
«Для событий вне контекста событие доставляется в том же потоке, который вызывал SetWinEventHook. В некоторых ситуациях, даже если вы запрашиваете события WINEVENT_INCONTEXT, события все равно будут доставляться вне контекста. Эти сценарии включают события из окон консоли и события из процессов с разной разрядностью (64 бита против 32 бит)"
Предполагает, что можно получить события окна консоли.
person
KVKConsultancy
schedule
02.01.2018