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