|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты |
|
[Архив - Часть 1.2] AutoIt скрипты
|
Ветеран Сообщения: 565 |
Профиль | Сайт | Отправить PM | Цитировать
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. |
|
------- Отправлено: 10:47, 10-02-2006 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать qeraser
Не работает. У меня есть сервер, к которому не подключен монитор. На сервере установлена WinXP. Захожу на этот сервер с помощью "Подключение к удаленному рабочему столу" через локальную сеть. На сервере вылажен скрипт. Если "подключение" активно, то скрипт работает и делает то, что надо. Если "подключение" закрыто, скрипт глохнет в самом начале, а именно: началом работы скрипта является запуск программы (вылезает окно авторизации), далее с помощью WinWaitActive определяем, что это окно активно и дальше понеслась (ввод пароля, логина ну т.д. и т.п.). В случае если "подключение" не активно, то скрипт "не видит" это окно авторизации и оно просто висит и ничего не происходит. |
Отправлено: 16:42, 30-11-2006 | #501 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
А чем не устраивает простое отключение/включение родительского окна? #include <GUIConstants.au3> GUICreate("My GUI") Opt("GUICoordMode",2) $Button_1 = GUICtrlCreateButton ("Open File", 10, 30, 100) GUISetState () While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button_1 WinSetState ("My GUI", "", @SW_DISABLE) $a = FileOpenDialog ( "FileOpenDialog", "c:\", "All (*.*)") WinSetState ("My GUI", "", @SW_ENABLE) WinActivate ("My GUI") EndSelect Wend |
Отправлено: 05:17, 01-12-2006 | #502 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
В идеале, хочется чтобы можно было вызвать окно сохранения (к примеру), и нажимая на окно гуи, чтобы вызванное окно мигало, точно также как это происходит если вызвать дочернее окно гуи... вот пример: #include <GUIConstants.au3> $ParentWin = GUICreate("Parent GUI", 250, 250) $Button = GUICtrlCreateButton("Child", 20, 50) GUISetState() $ChildWin = GUICreate("Child GUI", 200, 200, -1, -1, -1, -1, $ParentWin) While 1 $msg1 = GUIGetMsg() Select Case $msg1 = $GUI_EVENT_CLOSE Exit Case $msg1 = $Button GUISetState(@SW_DISABLE, $ParentWin) GUISetState(@SW_SHOW, $ChildWin) While 1 $msg2 = GUIGetMsg() Select Case $msg2 = $GUI_EVENT_CLOSE GUISetState(@SW_RESTORE, $ParentWin) GUISetState(@SW_ENABLE, $ParentWin) GUISetState(@SW_HIDE, $ChildWin) ExitLoop EndSelect Wend EndSelect WEnd P.S Вместо WinSetState лучше GuiSetState, и порядок таких объявлении очень важен... если именно для дочернего гуи, то так как я привёл в посте (@SW_HIDE в конце), это идеальный способ (таким образом не мигает окно родительского гуи в момент его активации). И ещё, вместо WinActivate("Title") лучше WinSetState("Title", "", @SW_RESTORE), это если для гуи, оно быстрее срабатывает. P.S.S. А ты не знаешь случам как решить задачку про проверку на нажатие определённой клавиши, кнопки мышки, или любого другого действия со стороны пользователя? (Которую я тоже привёл в посте со скриптом для разукрашивания). |
|
------- Отправлено: 09:06, 01-12-2006 | #503 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Dentel
Цитата:
|
|
Отправлено: 09:43, 01-12-2006 | #504 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
#include <GUIConstants.au3> #include <Constants.au3> $GUIParent = GUICreate("My GUI", 290, 70) Opt("GUICoordMode",2) $Button_1 = GUICtrlCreateButton ("Message Box", 30, 25, 100) $Button_2 = GUICtrlCreateButton ("File Open", 30, -1) GUISetState () While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Button_1 _MsgBox ($GUIParent, "Сообщение", "Текст сообщения", $MB_OK + $MB_ICONASTERISK) Case $msg = $Button_2 $file = _FileOpenDialog ($GUIParent, "Выбор файла", "C:\WINDOWS", "Документы (*.DOC)|Все (*.*)") _MsgBox ($GUIParent, "Сообщение", "Выбран файл: " & $file, $MB_OK + $MB_ICONASTERISK) EndSelect Wend Func _MsgBox ($mainGUI, $MsgBoxTitle, $MsgBoxText, $MsgBoxType) $ret = DllCall ("user32.dll", "int", "MessageBox", _ "hwnd", $mainGUI, _ "str", $MsgBoxText , _ "str", $MsgBoxTitle, _ "int", $MsgBoxType) Return $ret [0] EndFunc Func _FileOpenDialog ($mainGUI, $sTitle, $sInitDir, $sFilter = 'All (*.*)') Local $aFilter = StringSplit ( $sFilter, '|') Local $aCSTR [$aFilter [0] *2+1] Local $i, $iStart, $iFinal, $sCStruct = '', $sWStruct = '' $aCSTR [0] = $aFilter [0] *2 For $i=1 To $aFilter [0] $iStart = StringInStr ($aFilter [$i], '(', 0, 1) $iFinal = StringInStr ($aFilter [$i], ')', 0,-1) $aCSTR [$i*2-1] = StringStripWS (StringLeft ($aFilter [$i], $iStart-1), 3) $aCSTR [$i*2] = StringStripWS (StringTrimRight (StringTrimLeft ($aFilter [$i], $iStart), StringLen ($aFilter [$i]) -$iFinal+1), 3) $sCStruct = $sCStruct & 'byte[' & StringLen ($aCSTR [$i*2-1])+1 & '];byte[' & StringLen ($aCSTR [$i*2])+1 & '];' $sWStruct = $sWStruct & 'byte[' & StringLen ($aCSTR [$i*2-1])*2+2 & '];byte[' & StringLen ($aCSTR [$i*2])*2+2 & '];' Next Local $uCSTR = DllStructCreate ($sCStruct & 'byte[1]') Local $uWSTR = DllStructCreate ($sWStruct & 'byte[2]') For $i=1 To $aCSTR [0] DllStructSetData ($uCSTR, $i, $aCSTR [$i]) Next $ret = DllCall ("kernel32.dll", "int", "MultiByteToWideChar", _ "int", 0, _ "int", 0, _ "ptr", DllStructGetPtr ($uCSTR), _ "int", DllStructGetSize ($uCSTR), _ "ptr", DllStructGetPtr ($uWSTR), _ "int", DllStructGetSize ($uWSTR) ) $ret = DllCall("Shell32.dll", "int", 'GetFileNameFromBrowse', _ 'hwnd', $mainGUI, _ 'wstr', '', _ 'int', 255, _ 'wstr', $sInitDir, _ 'wstr', '', _ 'ptr', DllStructGetPtr ($uWSTR), _ 'wstr', $sTitle ) Return $ret [2] EndFunc |
|
Отправлено: 10:23, 02-12-2006 | #505 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
- нет надежных средств для снятия состояния клавиатуры, пользовательские программы работают с виртуальной, а не реальной клавиатурой; - существуют API-функции, позволяющие снимать состояние всех клавиш виртуальной клавиатуры за один вызов, т.е. возможно отслеживать все действия пользователя, но пока активно окно приложения. |
|
Отправлено: 11:00, 02-12-2006 | #506 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|