Что нового

не работает функция WinActivate

Hikari

Новичок
Сообщения
22
Репутация
0
Есть такой код
Код:
#include<UIAutomate.au3>
AutoItSetOption("WinTitleMatchMode",2)
ShellExecute("Opera.exe","--force-renderer-accessibility","C:\Program Files\Opera\","open")
Global $operadescr = WinActivate("Opera")
Global $OPERA = _UIA_GetElementFromHandle($operadescr)
OpenPrivateWindow()
OpenSite()
Func OpenPrivateWindow()
WinActivate("Opera")
$menu = _UIA_FindAllElements($OPERA, "Name:","Меню Opera");
_UIA_ElementMouseClick($menu[1],"",Default,Default,1,True)
$konfclick = _UIA_FindAllElements($OPERA, "Name:","Нове конфіденційне вікно Ctrl+Shift+N");
_UIA_ElementMouseClick($konfclick[1],"",Default,Default,1,True)

EndFunc
Func OpenSite()
;Поле адреси
WinActivate("Конфіденційний")
WinActive("Конфіденційний")
$adress_type = _UIA_FindAllElements($OPERA, "Name:","Поле адреси");
_UIA_ElementMouseClick($adress_type[1],"",Default,Default,1,True)

Sleep(1000)
Send("epichero.mobi",1)
Send("{ENTER}")

EndFunc

Код открывает оперу затем окно инкогнито и открывает сайт.Проблема заключается в том, что скрипт пишет ссылку в обычном окне, а не в конфиденциальном
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Hikari, получите дескриптор приватного окна и уже в нем ищите поле ввода
 
Автор
H

Hikari

Новичок
Сообщения
22
Репутация
0
Я получаю ноль с функции WinActivate, когда пытаюсь получить дескриптор окна инкогнито, думаю проблема в самой функции
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
#include <UIAutomate.au3>
AutoItSetOption("WinTitleMatchMode", 2)
Global $oParent = _Opera_Start()

Func _Opera_Start()
	Local $hWnd, $oParent, $oElement
	ShellExecute("Opera.exe", "--force-renderer-accessibility", "C:\Program Files\Opera\")
	$hWnd = WinWaitActive("Opera", Null, 5)
	If Not $hWnd Then Exit ConsoleWrite(" - Окно не найдено" & @LF)
	Send("^+n")
	WinClose($hWnd)
	WinWaitClose($hWnd)
	$hWnd = WinWaitActive("Opera", Null, 5)
	If Not $hWnd Then Exit ConsoleWrite(" - Окно не найдено" & @LF)
	$oParent = _UIA_GetElementFromHandle($hWnd)
	$oElement = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "Поле адреса") ;Поле адреси
	_UIA_ElementMouseClick($oElement)
	Sleep(250)
	Send("epichero.mobi{ENTER}")
	Return $oParent
EndFunc   ;==>_Opera_Start
 
Автор
H

Hikari

Новичок
Сообщения
22
Репутация
0
Tempo, ваш код закрывает окно до того, как откроется конфиденциалка :shok:
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Hikari, не знаю почему у вас не успевает, но можете выставить паузы и убрать закрытие основного окна

Код:
#include <UIAutomate.au3>
AutoItSetOption("WinTitleMatchMode", 2)
Global $g_hWnd, $g_oParent
_Opera_Start()

Func _Opera_Start()
    Local $hWnd, $oParent, $oElement
    ShellExecute("Opera.exe", "--force-renderer-accessibility")
    $hWnd = WinWaitActive("Opera", Null, 10)
    If Not $hWnd Then Exit ConsoleWrite(" - Окно не найдено" & @LF)
    Sleep(2000)
    Send("^+n")
    Sleep(1000)
    $g_hWnd = WinWaitActive("Opera", Null, 10)
    If Not $g_hWnd Then Exit ConsoleWrite(" - Окно не найдено" & @LF)
    $g_oParent = _UIA_GetElementFromHandle($g_hWnd)
    $oElement = _UIA_GetControlTypeElement($g_oParent, "UIA_EditControlTypeId", "Поле адреса") ;Поле адреси
    _UIA_ElementSetFocus($oElement)
    _UIA_ElementTextSetValue($oElement, "epichero.mobi")
    Sleep(1000)
    Send("{ENTER}")
EndFunc   ;==>_Opera_Start
 
Верх