Я пытаюсь разработать приложение, которое может вывести другое приложение на передний план, поэтому я анализирую поведение проводника Windows (Alt-Tab) с помощью Spy++, для меня интересно, какое приложение или какие три действительно активированы, поэтому я отслеживаю сообщение WM_ACTIVATEAPP .
WM_ACTIVATEAPP, когда wparam=false, согласно документации MSDN, lparam представляет идентификатор потока активируемого потока.
Вот пример из моего журнала Spy++: ‹00037> 00030DD6 S WM_ACTIVATEAPP fActive:False dwThreadID:000008F0
Моя проблема: данный dwThreadID 8F0 должен быть активируемым приложением. Но: когда я переключаюсь на представление потоков в Spy++ и ищу поток 8F0, я ничего не нахожу. Кажется, что этой ветки вообще не существует. Итак, как мне преобразовать этот идентификатор потока в идентификатор процесса?
GetProcessIdOfThread
. - person Paul   schedule 14.11.2013SetForegroundWindow
и покончите с этим. Если вы возражаете, чтоSetForegroundWindow
дает сбой при определенных условиях, не задерживайте дыхание: те же самые условия не позволяют отправкеWM_ACTIVATEAPP
фактически активировать это приложение. - person IInspectable   schedule 14.11.2013