$Tr7 = 0
$obj = "[CLASS:Edit; INSTANCE:1]"
Switch @OSVersion
Case 'WIN_8', 'WIN_10'
$obj = "[CLASS:ToolbarWindow32; INSTANCE:3]"
$Tr7 = 1
Case 'WIN_VISTA', 'WIN_7'
$obj = "[CLASS:ToolbarWindow32; INSTANCE:2]"
$Tr7 = 1
Case Else
EndSwitch
$AllWindows = WinList()
For $i = 1 To $AllWindows[0][0]
If _IsVisible($AllWindows[$i][1]) And $AllWindows[$i][0] <> "" And $AllWindows[$i][0] <> "Program Manager" And StringRight(_ProcessGetPath(WinGetProcess($AllWindows[$i][0])), 13) = '\explorer.exe' Then
$tmp = ControlGetText($AllWindows[$i][0], '', $obj)
If $Tr7 = 1 Then
If $tmp = '' Then $tmp = $AllWindows[$i][0]
$tmp = StringRegExpReplace($tmp, '(.*)(.:\\.*)', '\2')
; $tmp = StringRegExpReplace($tmp, '(?s)\A(?:.+?: )(.:\\.+?)\z', '\1')
If Not FileExists($tmp) Then ContinueLoop
EndIf
MsgBox(0, 'Сообщение', $tmp)
EndIf
Next
; Возвращает путь к EXE-файлу запущенного процесса зная его PID
Func _ProcessGetPath($PID)
Local $hKernel32_dll, $hProcess, $Path, $ret
If IsString($PID) Then $PID = ProcessExists($PID)
$Path = DllStructCreate('char[1000]')
$hKernel32_dll = DllOpen('Kernel32.dll')
; $PROCESS_QUERY_INFORMATION + $PROCESS_VM_READ
$hProcess = DllCall($hKernel32_dll, 'int', 'OpenProcess', 'dword', 0x400 + 0x10, 'int', 0, 'dword', $PID)
$ret = DllCall('Psapi.dll', 'long', 'GetModuleFileNameEx', 'long', $hProcess[0], 'int', 0, 'ptr', DllStructGetPtr($Path), 'long', DllStructGetSize($Path))
$ret = DllCall($hKernel32_dll, 'int', 'CloseHandle', 'hwnd', $hProcess[0])
DllClose($hKernel32_dll)
Return DllStructGetData($Path, 1)
EndFunc ;==>_ProcessGetPath
; Проверка, что окно является видимым. Возвращает True или False
Func _IsVisible($handle)
Return BitAND(WinGetState($handle), 4) And BitAND(WinGetState($handle), 2)
EndFunc ;==>_IsVisible