Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты

Ответить
Настройки темы
[Архив - Часть 1.2] AutoIt скрипты

Ветеран


Сообщения: 565
Благодарности: 41

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 25-01-2008
Внимание!
Тема переведена в архивное состояние





(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.
Можно ли с помощью AutoIt выбрать каталог? Хочу нацарапать оболочку, которая мне будет конфиги для nnBackup писать, дык выбрать каталог для бэкапа пока только вручную получается... Нельзя ли как-нть вывалить стандартный диалог по выбору файлов-папок, и получить из него результат действий пользователей?

-------
Tega AutoPatcher. Все обновления для XP в одном пакете. http://tega.ru/dirk/links.html


Отправлено: 10:47, 10-02-2006

 

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


qeraser

Не работает. У меня есть сервер, к которому не подключен монитор. На сервере установлена WinXP. Захожу на этот сервер с помощью "Подключение к удаленному рабочему столу" через локальную сеть. На сервере вылажен скрипт. Если "подключение" активно, то скрипт работает и делает то, что надо. Если "подключение" закрыто, скрипт глохнет в самом начале, а именно: началом работы скрипта является запуск программы (вылезает окно авторизации), далее с помощью WinWaitActive определяем, что это окно активно и дальше понеслась (ввод пароля, логина ну т.д. и т.п.). В случае если "подключение" не активно, то скрипт "не видит" это окно авторизации и оно просто висит и ничего не происходит.

Отправлено: 16:42, 30-11-2006 | #501



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить 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


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


amel27
Цитата:
чем не устраивает простое отключение/включение родительского окна?
Ну например, в панели задачь появляется дополнительная вкладка , или если сделать поверх всех окон гуи, то вызываемое окно буде за ним... можно конечно выкрутится функцией WinSetOnTop, но это, имхо, не удобно...
В идеале, хочется чтобы можно было вызвать окно сохранения (к примеру), и нажимая на окно гуи, чтобы вызванное окно мигало, точно также как это происходит если вызвать дочернее окно гуи... вот пример:

Код: Выделить весь код
#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.
А ты не знаешь случам как решить задачку про проверку на нажатие определённой клавиши, кнопки мышки, или любого другого действия со стороны пользователя? (Которую я тоже привёл в посте со скриптом для разукрашивания).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:06, 01-12-2006 | #503


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Dentel
Цитата:
У меня есть сервер, к которому не подключен монитор. На сервере установлена WinXP. Захожу на этот сервер с помощью "Подключение к удаленному рабочему столу" через локальную сеть. На сервере вылажен скрипт. Если "подключение" активно, то скрипт работает и делает то, что надо. Если "подключение" закрыто, скрипт глохнет
При отключении рабочий стол блокируется, для нормальной работы его нужно разблокировать удаленно или с локальной консоли... Поэтому связка AutoLogon+VNC удобней для администрирования серверов нежели RDP. ИМХО.

Отправлено: 09:43, 01-12-2006 | #504


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить 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
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Creat0R
Цитата:
А ты не знаешь случам как решить задачку про проверку на нажатие определённой клавиши, кнопки мышки, или любого другого действия со стороны пользователя? (Которую я тоже привёл в посте со скриптом для разукрашивания).
- AutoIT не годится для программ типа "клавиатурных шпионов" - такие программы работают на уровне ядра, а не в пользовательском режиме;
- нет надежных средств для снятия состояния клавиатуры, пользовательские программы работают с виртуальной, а не реальной клавиатурой;
- существуют API-функции, позволяющие снимать состояние всех клавиш виртуальной клавиатуры за один вызов, т.е. возможно отслеживать все действия пользователя, но пока активно окно приложения.

Отправлено: 11:00, 02-12-2006 | #506



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 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




 
Переход