Хочу сделать скрипт чтобы активировать окно справки. Если сделать по имени окна, то эксплорер тоже может иметь такое же имя, нужно активировать по хенделу.
Код:
#include <Array.au3>
If $CmdLine[0]>1 Then
Opt("WinTextMatchMode", 3) ; точный поиск окна
Opt("WinTextMatchMode", 2) ; быстрый режим
$sAutoIt_Path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt", "InstallDir")
; в ком-строке параметром 1-3 вызываем соответствующую справку
Switch $CmdLine[2]
Case 1
_call('AutoIt', 'AutoIt3.chm')
Case 2
_call('AutoIt Help', 'AutoIt3_EN.chm')
Case 3
_call('AutoIt UDFs Help', 'UDFs3.chm')
EndSwitch
ClipPut ( $CmdLine[1] ) ; отправляем в буфер
Send("^+{LEFT}") ; выделяем
Send("{BACKSPACE}") ; очищаем
Send("+{ins}") ; вставляем из буфера
Send("{ENTER}")
Else
MsgBox(0, "Ошибка", "Выделите текст, который требуется отправить в справку")
EndIf
Func _call($Win, $name)
;$Win = WinGetHandle($Win)
;MsgBox(0, 'Message', $Win&@CRLF&$name)
$WinR='[TITLE:'&$Win&';CLASS:HH Parent]'
$Handle=''
$AllWindows = WinList('[REGEXPTITLE:AutoIt*;CLASS:HH Parent]')
;_ArrayDisplay( $AllWindows, "Смотрим текущий массив" )
For $i = 1 To $AllWindows[0][0]
If $AllWindows[$i][0]=$Win Then
$Handle=WinGetHandle($AllWindows[$i][0])
;MsgBox(0, 'Message', $AllWindows[$i][0]&@CRLF&$Win&@CRLF&$Handle)
EndIf
Next
If $Handle<>'' Then $WinR=$Handle
;MsgBox(0, 'Message', $WinR)
;While WinExists($WinR) And WinGetTitle($WinR)<>$Win
; WinClose($WinR)
;WEnd
;If WinExists($WinR) And WinGetTitle($WinR)=$Win Then
If WinExists($WinR) Then
WinActivate($WinR)
Else
ShellExecute($sAutoIt_Path&'\'&$name)
EndIf
WinWaitActive($WinR)
; Если справка открыта на другой вкладке, то выполняем переключение на вкладку "Указатель"
If WinExists($WinR, '&Добавить') Then Send("^+{TAB 2}")
If WinExists($WinR, 'Пред&ыдущий поиск') Then Send("^+{TAB}")
If WinExists($WinR, 'В&ыберите раздел для вывода:') Then Send("^+{TAB}")
If Not WinExists($WinR, 'Вв&едите ключевое слово для поиска:') Then Send("^{TAB}")
EndFunc ;==>_addses