Отследить перехват фокуса приложения - VB
Формулировка задачи:
Доброго времени суток! Проблема такая: у меня на компьютере периодически кто-то перехватывает фокус секунды на 1-2, а потом обратно возвращает. Очень неудобно. Как мне это программно вычислить, т.е. узнать, что за программа? Грубо говоря, как отследить перехват фокуса в приложениях, открытых в Windows?
Решение задачи: «Отследить перехват фокуса приложения»
textual
Листинг программы
Declare Function GetForegroundWindow Lib "user32" () As Long Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As MODULEENTRY32) As Long Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long Private Type MODULEENTRY32 dwSize As Long th32ModuleID As Long th32ProcessID As Long GlblcntUsage As Long ProccntUsage As Long modBaseAddr As Long modBaseSize As Long hModule As Long szModule As String * 256 szExePath As String * 260 End Type Sub TimerProc() Dim uProcess As MODULEENTRY32 Static OldName$ Ret = GetForegroundWindow() GetWindowThreadProcessId Ret, pid hSnapshot = CreateToolhelp32Snapshot(8, pid) uProcess.dwSize = Len(uProcess) n = Module32First(hSnapshot, uProcess) Name$ = Left(uProcess.szModule, InStr(uProcess.szModule, Chr(0)) - 1) If Name$ <> OldName$ Then Form1.Print Name$ OldName$ = Name$ End If End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д