Отследить перехват фокуса приложения - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д