Вычислить окно, не зная его caption\title\etc... - VB
Формулировка задачи:
Хочется понажимать програмно кнопочки в чужом окне (FindWindow и т.д.). Да вот не знаю его примет.
Надо бы пробежаться по всем окнам (типа For Each...) и поймать его caption.
Пробовал следующий код:
Почему-то на
EnumWindows AddressOf EnumWindowsProc, ByVal 0&
выдаёт ошибку компиляции (неправильное использование AddressOf)
Может что не так пишу, или есть другие решения?
Спасибо.
Надо бы пробежаться по всем окнам (типа For Each...) и поймать его caption.
Пробовал следующий код:
Почему-то на
EnumWindows AddressOf EnumWindowsProc, ByVal 0&
выдаёт ошибку компиляции (неправильное использование AddressOf)
Может что не так пишу, или есть другие решения?
Спасибо.
Решение задачи: «Вычислить окно, не зная его caption\title\etc...»
textual
Листинг программы
<font color="blue">Option</font> <font color="blue">Explicit</font> <font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> TerminateProcess Lib <font color="teal">"kernel32"</font> (<font color="blue">ByVal</font> hProcess <font color="blue">As</font> <font color="blue">Long</font>, <font color="blue">ByVal</font> uExitCode <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> GetWindowThreadProcessId Lib <font color="teal">"user32"</font> (<font color="blue">ByVal</font> hwnd <font color="blue">As</font> <font color="blue">Long</font>, lpdwProcessId <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> Module32First Lib <font color="teal">"kernel32"</font> (<font color="blue">ByVal</font> hSnapshot <font color="blue">As</font> <font color="blue">Long</font>, uProcess <font color="blue">As</font> MODULEENTRY32) <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> Module32Next Lib <font color="teal">"kernel32"</font> (<font color="blue">ByVal</font> hSnapshot <font color="blue">As</font> <font color="blue">Long</font>, uProcess <font color="blue">As</font> MODULEENTRY32) <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Declare</font> <font color="blue">Function</font> EnumWindows Lib <font color="teal">"user32"</font> (<font color="blue">ByVal</font> lpEnumFunc <font color="blue">As</font> <font color="blue">Long</font>, <font color="blue">ByVal</font> lParam <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Boolean</font> <font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> OpenProcess Lib <font color="teal">"Kernel32.dll"</font> (<font color="blue">ByVal</font> dwDesiredAccessas <font color="blue">As</font> <font color="blue">Long</font>, <font color="blue">ByVal</font> bInheritHandle <font color="blue">As</font> <font color="blue">Long</font>, <font color="blue">ByVal</font> dwProcId <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> CreateToolhelp32Snapshot Lib <font color="teal">"kernel32"</font> (<font color="blue">ByVal</font> dwFlags <font color="blue">As</font> <font color="blue">Long</font>, <font color="blue">ByVal</font> th32ProcessID <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Private</font> <font color="blue">Type</font> MODULEENTRY32 dwSize <font color="blue">As</font> <font color="blue">Long</font> th32ModuleID <font color="blue">As</font> <font color="blue">Long</font> th32ProcessID <font color="blue">As</font> <font color="blue">Long</font> GlblcntUsage <font color="blue">As</font> <font color="blue">Long</font> ProccntUsage <font color="blue">As</font> <font color="blue">Long</font> modBaseAddr <font color="blue">As</font> <font color="blue">Long</font> modBaseSize <font color="blue">As</font> <font color="blue">Long</font> hModule <font color="blue">As</font> <font color="blue">Long</font> szModule <font color="blue">As</font> <font color="blue">String</font> * <font color="darkblue"><b>256</b></font> szExePath <font color="blue">As</font> <font color="blue">String</font> * <font color="darkblue"><b>260</b></font> <font color="blue">End</font> <font color="blue">Type</font> <font color="blue">Private</font> <font color="blue">Const</font> PROCESS_ALL_ACCESS = &H1F0FFF <font color="blue">Sub</font> Main() EnumWindows <font color="blue">AddressOf</font> EnumWindowsProc, <font color="blue">ByVal</font> <font color="darkblue"><b>0</b></font>& <font color="blue">End</font> <font color="blue">Sub</font> <font color="blue">Public</font> <font color="blue">Function</font> EnumWindowsProc(<font color="blue">ByVal</font> hwnd <font color="blue">As</font> <font color="blue">Long</font>, <font color="blue">ByVal</font> lParam <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Boolean</font> <font color="blue">Dim</font> uProcess <font color="blue">As</font> MODULEENTRY32, hSnapshot <font color="blue">As</font> <font color="blue">Long</font>, n <font color="blue">As</font> <font color="blue">Long</font> <font color="blue">Dim</font> lngHwndProcess <font color="blue">As</font> <font color="blue">Long</font>, strProcessName <font color="blue">As</font> <font color="blue">String</font> GetWindowThreadProcessId hwnd, lngHwndProcess <font color="00AA00">' получаем ID процесса</font> hSnapshot = CreateToolhelp32Snapshot(<font color="darkblue"><b>8</b></font>, lngHwndProcess) uProcess.dwSize = Len(uProcess) n = Module32First(hSnapshot, uProcess) <font color="blue">Do</font> <font color="blue">While</font> n strProcessName = UCase$(Left(uProcess.szModule, InStr(uProcess.szModule, Chr(<font color="darkblue"><b>0</b></font>)) - <font color="darkblue"><b>1</b></font>)) <font color="blue">If</font> strProcessName Like <font color="teal">"*.EXE*"</font> <font color="blue">Then</font> Debug.<font color="blue">Print</font> strProcessName <font color="blue">End</font> <font color="blue">If</font> n = Module32Next(hSnapshot, uProcess) <font color="blue">Loop</font> EnumWindowsProc = True <font color="blue">End</font> <font color="blue">Function</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д