-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Скрыть всплывающее окно ...
Вобщем проблема такая : во время работы периодически появляется окно , я его отлавливаю и скрываю но оно всё равно мигает и пропадает на экране.
Пробовал менял время обработки цикла отлова этого окна - от это только растёт нагрузка на процессор.
Окошко представляет собой системное окошко Windows для ввода логина и пароля при подключении.
Можно его как-то скрывать до его появления, что бы оно не мигало? ... с учётом того, что ...
Код:
If WinExists("Подключение к stat.****.net","") Then
If $PasswordBufer = 1 Then
Send($DecodePasword)
Send("{ENTER}")
EndIf
WinSetState("Подключение к stat.****.net", "", @SW_HIDE)
ControlClick("Подключение к stat.****.net", "", "[CLASS:Button; INSTANCE:2]")
|
Можно установить ожидание окна в 0: Opt("WinWaitDelay", 0)
Если дело не в этом, то полный-рабочий пример в студию.
|
Всё равно мигает - только быстрее пропадает
"Полный" пример вот.
Код:
Opt("WinWaitDelay", 0)
;~ .....................................
$PasswordBufer = 1
$DecodePasword = 123456
$WindowCert = 1
$WindowConn = 1
While 1
If $WindowCert = 1 Then ; Окно сетрификата
If WinExists("Предупреждение системы безопасности","") Then
WinSetState("Предупреждение системы безопасности", "", @SW_HIDE)
ControlClick("Предупреждение системы безопасности", "", "[CLASS:Button; INSTANCE:1]")
EndIf
EndIf
If $WindowConn = 1 Then ; Окно подключения
If WinExists("Подключение к stat.****.net","") Then
WinSetState("Подключение к stat.****.net", "", @SW_HIDE)
If $PasswordBufer = 1 Then ; вставлять автоматически
Send($DecodePasword)
EndIf
;~ WinSetState("Подключение к stat.****.net", "", @SW_HIDE)
ControlClick("Подключение к stat.****.net", "", "[CLASS:Button; INSTANCE:2]")
EndIf
EndIf
;~ .......................................
Sleep(250)
WEnd
|
Цитата:
Цитата FlatX007
Вобщем проблема такая : во время работы периодически появляется окно , я его отлавливаю и скрываю но оно всё равно мигает и пропадает на экране.
Пробовал менял время обработки цикла отлова этого окна - от это только растёт нагрузка на процессор.
Окошко представляет собой системное окошко Windows для ввода логина и пароля при подключении.
Можно его как-то скрывать до его появления, что бы оно не мигало? ... с учётом того, что ... »
|
Мое мнение: без хука здесь не обойдешься, а так как для этого необходимо писать полноценную DLL (не DllCallBackRegister()), то в AutoIt это зделать очень проблематично (если вообще возможно).
Я думаю проще использовать средства Windows для тихого подключения. Google на это даст множество ответов.
|
Цитата:
Цитата FlatX007
Всё равно мигает - только быстрее пропадает »
|
Ну вообще чтобы не появлялось наврядли получится. Вот пример с использованием хука, быстрее уже некуда вроде:
Код:
#NoTrayIcon
;
HotKeySet("^e", "_Quit")
;ShellHook notification codes:
Global Const $HSHELL_WINDOWCREATED = 1;
Global Const $HSHELL_WINDOWDESTROYED = 2;
Global Const $HSHELL_ACTIVATESHELLWINDOW = 3;
Global Const $HSHELL_WINDOWACTIVATED = 4;
Global Const $HSHELL_GETMINRECT = 5;
Global Const $HSHELL_REDRAW = 6;
Global Const $HSHELL_TASKMAN = 7;
Global Const $HSHELL_LANGUAGE = 8;
Global Const $HSHELL_SYSMENU = 9;
Global Const $HSHELL_ENDTASK = 10;
Global Const $HSHELL_ACCESSIBILITYSTATE = 11;
Global Const $HSHELL_APPCOMMAND = 12;
Global Const $HSHELL_WINDOWREPLACED = 13;
Global Const $HSHELL_WINDOWREPLACING = 14;
Global Const $HSHELL_RUDEAPPACTIVATED = 32772;
Global Const $HSHELL_FLASH = 32774;
Global $aMonitor_WinTitles[3] = [2, "Предупреждение системы безопасности", "Подключение к stat.****.net"]
Global $hGUI = GUICreate("Shell Hooker")
;Hook stuff:
GUIRegisterMsg(RegisterWindowMessage("SHELLHOOK"), "HShellWndProc")
ShellHookWindow($hGUI, 1)
While 1
Sleep(1000)
WEnd
Func HShellWndProc($hWnd, $Msg, $wParam, $lParam)
Switch $wParam
Case $HSHELL_WINDOWCREATED
Local $s_Title = WinGetTitle($lParam)
For $i = 1 To $aMonitor_WinTitles[0]
If $s_Title = $aMonitor_WinTitles[$i] Then
WinKill($lParam)
ExitLoop
EndIf
Next
EndSwitch
EndFunc
;register/unregister ShellHook
Func ShellHookWindow($hWnd, $bFlag)
Local $sFunc = 'DeregisterShellHookWindow'
If $bFlag Then $sFunc = 'RegisterShellHookWindow'
Local $aRet = DllCall('user32.dll', 'int', $sFunc, 'hwnd', $hWnd)
Return $aRet[0]
EndFunc
;register window message
Func RegisterWindowMessage($sText)
Local $aRet = DllCall('user32.dll', 'int', 'RegisterWindowMessage', 'str', $sText)
Return $aRet[0]
EndFunc
Func _Quit()
ShellHookWindow($hGUI, 0)
Exit
EndFunc
|
Цитата:
Цитата Yashied
Мое мнение: без хука здесь не обойдешься, а так как для этого необходимо писать полноценную DLL (не DllCallBackRegister()), то в AutoIt это зделать очень проблематично (если вообще возможно).
Я думаю проще использовать средства Windows для тихого подключения. Google на это даст множество ответов. »
|
В каком смысле средства Виндовс для подключения ?
У меня работает отдельная программа которая опрашивает HTTPS сервер о данных баланса (грубо говоря она сохраняет HTML код станицы в файле во временной папке). Эту программу написал один мой знакомый на "HiAsm" ... но она с косяком почему-то периодически появляется это злополучное окошко для ввода логина и пароля. На AutoIT неполучилось написать, как оказалось он отказывается работать с HTTPS.
Цитата:
Цитата Creat0R
Ну вообще чтобы не появлялось наврядли получится. Вот пример с использованием хука, быстрее уже некуда вроде: »
|
Оба окошка вообще не скрываются .... и в окошко подключения должен вставляться пароль а иначе программа инициатор этого окна небудет работать.
|
Цитата:
Цитата FlatX007
На AutoIT неполучилось написать, как оказалось он отказывается работать с HTTPS. »
|
В справке написано что https поддерживается.
Цитата:
Цитата FlatX007
Оба окошка вообще не скрываются .... и в окошко подключения должен вставляться пароль а иначе программа инициатор этого окна небудет работать »
|
Ну это всего лишь пример, в HShellWndProc можно самому изменить нужные условия проверки (в цикле при переборе заголовков с массива).
|
Цитата:
Цитата Creat0R
В справке написано что https поддерживается. »
|
Я вкурсе, что оно потдерживается но на деле неработает ничего :(
|
Цитата:
Цитата FlatX007
на деле неработает ничего »
|
Не работает слишком громко сказано, возможно причина вовсе не в протоколе https (это можно попробовать выяснить в отдельной теме).
|
Время: 14:10.
© OSzone.net 2001-