|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты |
|
[Архив - Часть 1.2] AutoIt скрипты
|
Ветеран Сообщения: 565 |
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. |
|
------- Отправлено: 10:47, 10-02-2006 |
![]() Ветеран Сообщения: 1073
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
Отправлено: 12:04, 10-07-2006 | #201 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать Подскажите пожалуйста, как можно совместить работу такого (примерного)
скрипта. На основе поставленной в ней задачи, хочу научится некоторым нужным впоследствии, рабочим скриптам. Так что не удевляйтесь возможной несуразности его (скрипта) логики. По частям он работает, но как совместить его работу, моего ума, хелпов и статей форума явно не достаточно... Идея вот в чём: 1. Выбираю первую или вторую колонку, и/или ставлю вручную нужные галочки. 2. Жму на "Кнопка Выбора". 3. Если надо, повторяю п.1 и/или п.2 для выбора другой колонки. 4. Жму "Выполнить" - выполняются соответствующие чекбоксам операции. 5. Нажатия на кнопку "Выход" должно приводить к выходу из скрипта на любом этапе. 6. Не знаю, как придумать, чтоб при повторном нажатии на "Кнопка Выбора" происходил бы select / deselect чекбокса. Вроде бы смог понятно обяснить... Вот скрипт: #include <GUIConstants.au3> Opt("GUICoordMode", 1) GUICreate("Учусь Работать С Чекбоксами", 400, 300) $checkCN1 = GUICtrlCreateCheckbox ("CHECKBOX 1", 10, 10, 120, 20) $checkCN2 = GUICtrlCreateCheckbox ("CHECKBOX 2", 10, 30, 120, 20) $checkCN3 = GUICtrlCreateCheckbox ("CHECKBOX 3", 10, 50, 120, 20) $checkCN4 = GUICtrlCreateCheckbox ("CHECKBOX 4", 130, 10, 230, 20) $checkCN5 = GUICtrlCreateCheckbox ("CHECKBOX 5", 130, 30, 230, 20) $checkCN6 = GUICtrlCreateCheckbox ("CHECKBOX 6", 130, 50, 230, 20) $Start = GUICtrlCreateButton("Выполнить", 10, 100, 120, 20) $Close = GUICtrlCreateButton("Выход", 10, 120, 120, 20) $button_1 = GUICtrlCreateButton ("Кнопка Выбора ", 10, 150, 120, 20) $group_1 = GUICtrlCreateGroup ("Группа", 5, 175, 120, 95) GUIStartGroup() $radio_1 = GUICtrlCreateRadio ("Первая Колонка", 10, 190, 120, 20) $radio_2 = GUICtrlCreateRadio ("Вторая Колонка", 10, 205, 120, 20) $radioval1 = 0 ; We will assume 0 = first radio button selected, 2 = last button $radioval2 = 2 GUISetState () While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $GUI_EVENT_MINIMIZE MsgBox(0,"", "Dialog minimized",2) Case $msg = $GUI_EVENT_MAXIMIZE MsgBox(0,"", "Dialog restored",2) Case $msg = $button_1 if $radioval1 = 0 then ControlCommand ( 'Учусь Работать С Чекбоксами', '', 'Button1', 'Check', '' ) ControlCommand ( 'Учусь Работать С Чекбоксами', '', 'Button2', 'Check', '' ) ControlCommand ( 'Учусь Работать С Чекбоксами', '', 'Button3', 'Check', '' ) EndIf if $radioval1 = 1 then ControlCommand ( 'Учусь Работать С Чекбоксами', '', 'Button4', 'Check', '' ) ControlCommand ( 'Учусь Работать С Чекбоксами', '', 'Button5', 'Check', '' ) ControlCommand ( 'Учусь Работать С Чекбоксами', '', 'Button6', 'Check', '' ) EndIf ; Назначение этих двух строчек я не понимаю... Case $msg >= $radio_1 AND $msg <= $radio_2 $radioval1 = $msg - $radio_1 EndSelect WEnd ;************************************************************************ #cs ---------------------- While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Or $msg = $Close Then Exit ElseIf $msg = $Start Then If GUICtrlRead($checkCN1) = 1 Then MsgBox(0,"Установка","Чекбокс 1",1) EndIf If GUICtrlRead($checkCN2) = 1 Then MsgBox(0,"Установка","Чекбокс 2",1) EndIf If GUICtrlRead($checkCN3) = 1 Then MsgBox(0,"Установка","Чекбокс 3",1) EndIf If GUICtrlRead($checkCN4) = 1 Then MsgBox(0,"Установка","Чекбокс 4",1) EndIf If GUICtrlRead($checkCN5) = 1 Then MsgBox(0,"Установка","Чекбокс 5",1) EndIf If GUICtrlRead($checkCN6) = 1 Then MsgBox(0,"Установка","Чекбокс 6",1) EndIf EndIf WEnd ---------------------- #ce |
Отправлено: 03:47, 12-07-2006 | #202 |
Пользователь Сообщения: 125
|
Профиль | Отправить PM | Цитировать DenchikK
Цитата:
![]() Цитата:
Цитата:
Цитата:
Case $msg = $button_1 If GUICtrlRead($checkCN1)=$GUI_CHECKED Then GUICtrlSetState($checkCN1,$GUI_UNCHECKED) Else GUICtrlSetState($checkCN1,$GUI_CHECKED) EndIF Цитата:
|
|||||
Отправлено: 09:35, 12-07-2006 | #203 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать bogomolv
Попробуйте, пожалуйста, запустить мой скрипт - всё наглядно увидите. ;-) Цитата:
Ладно - попробую ещё понятнее объяснить: Как видно по моему скрипту - есть одна часть, которая выполняется, и вторая - закоментированная. Это я думаю видно и понятно. Первая (незакоментированная) часть в зависимости от того, какая из RadioButton выбрана, выделяет три левых или правых чекбокса - то же вроде должно быть понятно. Вторая, закоментированная, часть показывает, что с выделенными чекбоксами делать. И если запустить скрипт в том виде, как у меня он дан, можно увидеть - что первая часть (отметка чекбоксов) работает. Если закоментитровать первую часть, и раскоментировать вторую - видим что и вторая часть так же выполняет свою функцию, что на неё возложена. Теперь немного понятнее стало какие части и что нужно совмещать? Может и не так, как у меня записано, принцип того, что должно получится, ясен? Добавлено: Всё, вопрос снимается - разобрался, как это всё работает (вроде-как). Видать жара и недосып дают о себе знать ;-) Вот что в итоге вышло: #include <GUIConstants.au3> GUICreate("Учусь Работать С Чекбоксами", 400, 300) $checkCN1 = GUICtrlCreateCheckbox ("CHECKBOX 1", 10, 10, 120, 20) $checkCN2 = GUICtrlCreateCheckbox ("CHECKBOX 2", 10, 30, 120, 20) $checkCN3 = GUICtrlCreateCheckbox ("CHECKBOX 3", 10, 50, 120, 20) $checkCN4 = GUICtrlCreateCheckbox ("CHECKBOX 4", 130, 10, 230, 20) $checkCN5 = GUICtrlCreateCheckbox ("CHECKBOX 5", 130, 30, 230, 20) $checkCN6 = GUICtrlCreateCheckbox ("CHECKBOX 6", 130, 50, 230, 20) $Start = GUICtrlCreateButton("Выполнить", 10, 100, 120, 20) $Close = GUICtrlCreateButton("Выход", 10, 120, 120, 20) $button_1 = GUICtrlCreateButton ("Кнопка Выбора ", 10, 150, 120, 20) $group_1 = GUICtrlCreateGroup ("Группа", 5, 175, 120, 95) GUIStartGroup() $radio_1 = GUICtrlCreateRadio ("Первая Колонка", 10, 190, 120, 20) $radio_2 = GUICtrlCreateRadio ("Вторая Колонка", 10, 205, 120, 20) $radioval1 = 0 ; We will assume 0 = first radio button selected, 2 = last button $radioval2 = 2 GUISetState () While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Or $msg = $Close Exit Case $msg = $GUI_EVENT_MINIMIZE MsgBox(0,"", "Dialog minimized",2) Case $msg = $GUI_EVENT_MAXIMIZE MsgBox(0,"", "Dialog restored",2) Case $msg = $button_1 if $radioval1 = 0 then If GUICtrlRead($checkCN1)=$GUI_CHECKED Then GUICtrlSetState($checkCN1,$GUI_UNCHECKED) Else GUICtrlSetState($checkCN1,$GUI_CHECKED) EndIF If GUICtrlRead($checkCN2)=$GUI_CHECKED Then GUICtrlSetState($checkCN2,$GUI_UNCHECKED) Else GUICtrlSetState($checkCN2,$GUI_CHECKED) EndIF If GUICtrlRead($checkCN3)=$GUI_CHECKED Then GUICtrlSetState($checkCN3,$GUI_UNCHECKED) Else GUICtrlSetState($checkCN3,$GUI_CHECKED) EndIF EndIf if $radioval1 = 1 then If GUICtrlRead($checkCN4)=$GUI_CHECKED Then GUICtrlSetState($checkCN4,$GUI_UNCHECKED) Else GUICtrlSetState($checkCN4,$GUI_CHECKED) EndIF If GUICtrlRead($checkCN5)=$GUI_CHECKED Then GUICtrlSetState($checkCN5,$GUI_UNCHECKED) Else GUICtrlSetState($checkCN5,$GUI_CHECKED) EndIF If GUICtrlRead($checkCN6)=$GUI_CHECKED Then GUICtrlSetState($checkCN6,$GUI_UNCHECKED) Else GUICtrlSetState($checkCN6,$GUI_CHECKED) EndIF EndIf ; Назначение этих двух строчек я не понимаю... Case $msg >= $radio_1 AND $msg <= $radio_2 $radioval1 = $msg - $radio_1 Case $msg = $Start If GUICtrlRead($checkCN1) = 1 Then MsgBox(0,"Установка","Чекбокс 1",1) EndIf If GUICtrlRead($checkCN2) = 1 Then MsgBox(0,"Установка","Чекбокс 2",1) EndIf If GUICtrlRead($checkCN3) = 1 Then MsgBox(0,"Установка","Чекбокс 3",1) EndIf If GUICtrlRead($checkCN4) = 1 Then MsgBox(0,"Установка","Чекбокс 4",1) EndIf If GUICtrlRead($checkCN5) = 1 Then MsgBox(0,"Установка","Чекбокс 5",1) EndIf If GUICtrlRead($checkCN6) = 1 Then MsgBox(0,"Установка","Чекбокс 6",1) EndIf EndSelect WEnd |
|
Последний раз редактировалось DenchikK, 12-07-2006 в 14:12. Отправлено: 12:55, 12-07-2006 | #204 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать XXXler
Цитата:
Есть такой вопрос: Как по команде IniWrite, записывать строчки в файл конфигурации, но не в самый конец раздела, а, например, во вторую строчку заданного раздела? И ещё, при команде IniRead, возвращается Цитата:
|
||
------- Отправлено: 12:07, 13-07-2006 | #205 |
![]() Ветеран Сообщения: 1073
|
Профиль | Отправить PM | Цитировать Цитата:
Цитата:
Если надо сравнить одно значение: |
||
Отправлено: 12:35, 13-07-2006 | #206 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
|
|
Отправлено: 12:46, 13-07-2006 | #207 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать XXXler
Цитата:
А на счёт строк, так дело в том, что мне нужно проверить именно ключь, а не значение. Т.е пусть даже восспользоваться другой командой, и обращаться к файлу как к обычному (например, как к файлу *.txt), но чтобы сравнить указанный текст со строкой в файле. DenchikK Цитата:
Цитата:
|
|||
------- Отправлено: 13:11, 13-07-2006 | #208 |
![]() Ветеран Сообщения: 1073
|
Профиль | Отправить PM | Цитировать Может найдешь что тебе именно нужно:
;~ Условия поиска $Sect="Имя_секции" $Param="Имя_параметра" $Val="Значение_параметра" $File="Имя_файла" If Not FileExists($File) Then Exit 1 ;~ Поиск по имени секции $SecList=IniReadSectionNames($File) For $i=1 To $SecList[0] If $SecList[$i]=$Sect Then MsgBox(0,"","Секция "&$Sect&" существует") Next ;~ Поиск по имени параметра в любой секции $SecList=IniReadSectionNames($File) For $i=1 To $SecList[0] $ParList=IniReadSection($File,$SecList[$i]) For $y=1 To $ParList[0][0] If $ParList[$y][0]=$Param Then MsgBox(0,"","Параметр "&$Param&" существует в секции "&$SecList[$i]) Next Next ;~ Поиск по значению параметра в любой секции $SecList=IniReadSectionNames($File) For $i=1 To $SecList[0] $ParList=IniReadSection($File,$SecList[$i]) For $y=1 To $ParList[0][0] If $ParList[$y][1]=$Val Then MsgBox(0,"","Значение "&$Val&" существует в параметре "&$ParList[$y][0]&", секции "&$SecList[$i]) Next Next ;~ Поиск по имени секции и параметра If IniRead($File,$Sect,$Param,"А вот и нет такого параметра")<>"А вот и нет такого параметра" Then MsgBox(0,"","Параметр "&$Param&" существует в секции "&$Sect) ;~ Поиск по имени секции, параметра и значения If IniRead($File,$Sect,$Param,"А вот и нет такого параметра")=$Val Then MsgBox(0,"","Значение "&$Val&" существует в параметре "&$Param&", секции "&$Sect) |
Отправлено: 13:55, 13-07-2006 | #209 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать XXXler
Огромное спасибо! помогло! Появился у меня интерес к такому вопросу - Можно ли каким то образом, воспринимать переданный ключь (рефферер) из другой программы, и чтобы скрипт распознавал, и если это определённый ключь, то что-то должно происходить. Т.е, например, скрипт был вызван из контекстного меню определённой программы, и при этом вызове, был указан ключ (Пример: Item, "Script" = Execute program, "Script.exe", "%A") - И теперь, скрипт должен распознать этот ключь, и если был передан именно этот ключь, то скрипт продолжит заданные действия в цепочке, а если ключь не совпадает, т.е если не был передан именно этот ключ, или вообще не был передн ключь, то должен происходить выход из цепочки (Do....Until...) P.S: Как делать цепочку\выход с неё, продолжение действии и т.д, я уже знаю, и мне нужно только узнать, как распозновать тот самый ключь (рефферер). И ещё вот что хотел узнать, кто-то знает, где мможно посмотреть на разные структуры скриптов, например, для чекбоксов, для передачи результата из выбранного файла\каталога через FileOpenDialog, в затемнённое поле GUI интерфейса, и тому подобное (что-то вроде преведённого XXXler'ом в посте на один выше чем мой). |
------- Отправлено: 19:39, 15-07-2006 | #210 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|