Версия AutoIt: 3.3.14.2
Описание:
Добрый вечер.
У меня есть скрипт, активирующий определенное окно по названию процесса.
Подскажите - как при помощи скрипта - активировать окно не по названию процесса, а по наличию конкретного слова в Title ?
Это слово "расчет".
Полный title : "Книга расчетов.xls [Режим совместимости] - My Personalized Workbook"
Примечания:
Описание:
Добрый вечер.
У меня есть скрипт, активирующий определенное окно по названию процесса.
Подскажите - как при помощи скрипта - активировать окно не по названию процесса, а по наличию конкретного слова в Title ?
Код:
#include <WinAPIEx.au3>
$sProg = "TOTALCMD64-3.EXE"
$hWnd = _WinGetForProc($sProg, 'TTOTAL_CMD') ; Второй параметр это Класс окна, если его не указать, то вы получите информацию о всех окнах процесса
If @error = 1 Then Exit MsgBox(262144 + 16, Default, 'Процесс не существует')
WinSetState($hWnd, '', @SW_SHOW)
WinActivate($hWnd)
If (Not WinActive($hWnd) Or Not BitAND(WinGetState($hWnd), 2)) And (Not IsAdmin()) Then MsgBox(262144 + 16, Default, 'Запустите скрипт От Имени Администратора')
_WinGetForProc($sProg) ; Тест
Func _WinGetForProc($sProcName, $vWinClass = False)
Local $iPID = ProcessExists($sProcName)
If Not $iPID Then Return SetError(1, 0, 0)
Local $aData = _WinAPI_EnumProcessWindows($iPID, False) ; Если вы не хотите принимать во внимание свернутые окна, тогда ставьте "True"
If @error Then Return SetError(2, 0, 0)
If $vWinClass Then
For $i = 1 To $aData[0][0]
If $aData[$i][1] == $vWinClass Then Return $aData[$i][0]
Next
Else
Local $sText = 'Всего количество окон процесса: ' & $sProcName & ' = ' & $aData[0][0] & @CR
$sText &= 'Handle: | Class:' & @CR & '---------------------------------------------' & @CR
For $i = 1 To $aData[0][0]
$sText &= $aData[$i][0] & ' | ' & $aData[$i][1] & @CR
Next
Exit
EndIf
Return SetError(3, 0, 0)
EndFunc ;==>_WinGetForProc
Полный title : "Книга расчетов.xls [Режим совместимости] - My Personalized Workbook"
Примечания: