Что нового

проблема с кнопкой

Сообщения
50
Репутация
-1
Пишу скрипт установки программы, имею такую проблему. при выводе очередного окна получаю такое окно (см. вложение) как видно из картинки, кнопка "ОК" неактивна, соотвественно через send("!O") не получится, но через send("{ENTER}") тоже не выходит!! подскажите что сделать?
 

Вложения

  • okno.jpg
    okno.jpg
    20.8 КБ · Просмотры: 16
Автор
Y
Сообщения
50
Репутация
-1
спасибо, полезно, но я не понимаю как дальше писать код что бы выполнить нажатие кнопки?
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
yokselmoksel, ну давайте вы сперва покажите скриншот информации о кнопке и окне из Au3Info/Control Viewer
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Попробуйте так
Код:
Local $hWnd = WinWait("Выберите язык установки", Null, 10)
If Not $hWnd Then Exit MsgBox(16, "Ошибка", "Не удалось найти окно")
ControlClick($hWnd, Null, "[CLASS:TNewButton; INSTANCE:1]")
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
yokselmoksel, тогда будет проще если вы зальете сюда инсталлятор конечно если он не большой. И да у меня все сработало это же Inno Setup? У него такие же контролы при выборе языка. Еще не вижу хотя бы укороченной версии вашего кода, то есть никакой инициативы

Удалено
 
Автор
Y
Сообщения
50
Репутация
-1
код простой.. но буквально на начальном этапе и затыкается из-за кнопки.
Код:
Run("2.16.3.55_djinsetup.exe") ;Запуск установщика Djin
WinWaitActive("Выберите язык установки", "Выберите язык, который будет использован в  процессе установки:")
send("{ENTER}")


может что-то с кодировками?
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
yokselmoksel, вы пробовали скачать пример выше?
 
Автор
Y
Сообщения
50
Репутация
-1
да, не работает к дальнейшему этапу установки не переходит.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
yokselmoksel, ну тогда проверьте получаете ли вы дескриптор окна функцией WinWaitActive может проблема в том что окно не в фокусе

Попробуйте еще раз вариант с WinWait, но добавьте задержку перед нажатием
Код:
Local $hWnd = WinWait("Выберите язык установки", Null, 10)
ConsoleWrite("WinWait: " & $hWnd & @LF)
Sleep(500)
Local $hControl = ControlGetHandle($hWnd, Null, "[CLASS:TNewButton; INSTANCE:1]")
ConsoleWrite("ControlGetHandle: " & $hControl & @LF)
ConsoleWrite("ControlClick: " & ControlClick($hWnd, Null, $hControl) & @LF)
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
yokselmoksel, посмотрите в консоль SciTE что возвращают функции
 
Автор
Y
Сообщения
50
Репутация
-1
Код:
>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /test /run /prod /ErrorStdOut /in "C:\distr\Digispot\Setup_Djin.au3" /UserParams    
+>18:33:04 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v.3.7.3.0   Keyboard:00000419  OS:WIN_81/  CPU:X64 OS:X64  Environment(Language:0419)  CodePage:0  utf8.auto.check:4
+>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\a.antonovich\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\a.antonovich\AppData\Local\AutoIt v3\SciTE 
- *** Compile in Test mode skipping Tidy; Au3Stripper; Resource updating and Versioning to speed up the process. ***
>Running AU3Check (3.3.14.2)  from:C:\Program Files (x86)\AutoIt3  input:C:\distr\Digispot\Setup_Djin.au3
+>18:33:04 AU3Check ended.rc:0
>Running:(3.3.14.2):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\distr\Digispot\Setup_Djin.au3"    
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
WinWait: 0x00AD0D16
ControlGetHandle: 0x01701DF4
ControlClick: 1
+>18:33:06 AutoIt3.exe ended.rc:0
+>18:33:06 AutoIt3Wrapper Finished.
>Exit code: 0    Time: 2.967
 
A

Alofa

Гость
Код:
; Вместо
WinWait()
; попробуйте
WinWaitActive()

Как вариант.
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
yokselmoksel, странно все нормально

Еще попробуйте через ControlSend
Код:
Run("2.16.3.55_djinsetup.exe")

Local $hWnd = WinWaitActive("Выберите язык установки", Null, 10)
ConsoleWrite(@LF & @LF & "--> WinWait: " & $hWnd & @LF)
Sleep(500)
Local $hControl = ControlGetHandle($hWnd, Null, "[CLASS:TNewButton; INSTANCE:1]")
ConsoleWrite("--> ControlGetHandle: " & $hControl & @LF)
ConsoleWrite("--> ControlSend: " & ControlSend($hWnd, Null, $hControl, "{ENTER}") & @LF & @LF & @LF)


Если не сработает попробуйте через костыль - установить фокус на кнопку и Send
Код:
Run("2.16.3.55_djinsetup.exe")

Local $hWnd = WinWaitActive("Выберите язык установки", Null, 10)
ConsoleWrite(@LF & @LF & "--> WinWait: " & $hWnd & @LF)
Sleep(500)
Local $hControl = ControlGetHandle($hWnd, Null, "[CLASS:TNewButton; INSTANCE:1]")
ControlFocus($hWnd, Null, $hControl)
ConsoleWrite("--> ControlGetHandle: " & $hControl & @LF & @LF & @LF)
Sleep(500)
Send("{ENTER}")
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
yokselmoksel, а вообще любая эмуляция где-то работает?
 
Верх