Visual Basic 6 Получить путь к exe файлу активного окна - VB

Узнай цену своей работы

Формулировка задачи:

Люди, что мне в код добавить, чтобы он еще показывал путь к exe файлу этого окна ?
Листинг программы
  1. Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  2. Dim hwnd As Long ' удерживает управление, переданное функцией Find Window.
  3. Dim pid As Long ' используется для хранения идентификатора процесса.
  4. Dim pHandle As Long ' держит управление процессом.
  5. ' Ищем окно игры и, если игра не запущена, выдаем сообщение об ошибке.
  6. hwnd = FindWindow(vbNullString, "Проигрыватель Windows Media")
  7. If (hwn = 0) Then
  8. msgbox "ОКНО НАЙДЕНО!"
  9. Else
  10. msgbox "Окно не найдено"
  11. End If

Решение задачи: «Visual Basic 6 Получить путь к exe файлу активного окна»

textual
Листинг программы
  1. Private Declare Function FindWindow Lib "user32" Alias "FindWindowW" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
  2. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
  3. Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExW" (lpVersionInformation As Any) As Long
  4. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  5. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  6. Private Declare Function QueryFullProcessImageName Lib "kernel32" Alias "QueryFullProcessImageNameW" (ByVal hProcess As Long, ByVal dwFlags As Long, ByVal lpExeName As Long, lpdwSize As Long) As Long
  7.  
  8. Private Sub Form_Load()
  9.     Dim hwnd    As Long
  10.     Dim lr      As Long
  11.     Dim pid     As Long
  12.    
  13.     hwnd = FindWindow(ByVal 0&, StrPtr("Calculator"))
  14.     If hwnd <> 0 Then
  15.         lr = GetWindowThreadProcessId(hwnd, pid)
  16.         MsgBox GetProcessNameByPID(pid)
  17.     Else
  18.         MsgBox "No window."
  19.     End If
  20. End Sub
  21.  
  22. Function GetProcessNameByPID(pid As Long) As String
  23.     Const PROCESS_QUERY_LIMITED_INFORMATION As Long = &H1000
  24.     Const PROCESS_QUERY_INFORMATION         As Long = &H400
  25.     Const MAX_PATH                          As Long = 260
  26.     Dim hProc               As Long
  27.     Dim Path                As String
  28.     Dim lStr                As Long
  29.     Dim inf(68)             As Long
  30.     Dim IsVistaAndLater     As Boolean
  31.     inf(0) = 276: GetVersionEx inf(0): IsVistaAndLater = inf(1) >= 6
  32.     If Not IsVistaAndLater Then Exit Function
  33.     hProc = OpenProcess(IIf(IsVistaAndLater, PROCESS_QUERY_LIMITED_INFORMATION, PROCESS_QUERY_INFORMATION), False, pid)
  34.     If hProc <> 0 Then 'INVALID_HANDLE_VALUE Then
  35.        lStr = MAX_PATH
  36.         Path = Space(lStr)
  37.         ' minimum Windows Vista !!!!!!!
  38.        If QueryFullProcessImageName(hProc, 0, StrPtr(Path), lStr) Then
  39.             GetProcessNameByPID = Left$(Path, lStr)
  40.         End If
  41.         CloseHandle hProc
  42.     End If
  43. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы