[Архив - Часть 1.2] AutoIt скрипты

Ответить
 • Просмотры: 11
Аватара пользователя
VelDmi

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение VelDmi »

Creat0R


Цитата:



Имхо, справку, которую переделали на русский, как будто с помощью словаря переделывали. Не то чтобы автор этой справки не знает английского, или программирования в AutoIt, я вовсе этого не утверждаю, просто считаю что можно было бы приложить немного больше усилии, ради такой весчи - как помощь по AutoIt'у!



Не удержался, так как считаю что сдесь ты не прав. Я не задаю сдесь кучу вопросов потому, что русификация справки ВЕЛИКОЛЕПНА! Может быть не идеал, но по сравнению с другими русификациями что я видел сделано очень хорошо. По крайней мере большинство вопросов решалось именно путем перечитывания справки.



PS А тебе действительно поможет учебник для начинающих, так как само понятие циклов, условных переходов и т.д. одинаково для всех языков и начинать нужно с изучения основ.
Аватара пользователя
ANGRO

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение ANGRO »

Попробовал решить проблему с выводом из CMD как предлогал bogomolv в 120 посте. Во первых если копировать код из инета то он не работает т.к. изменяется строка в $a1 надо брать именно по ECHO, но у меня и она не заработала пока не взял эту строку из GUI самого скрипта. Более того есть большое подозрение что на Win с MUI эта строка будет другой и вообще памятуя о проблемах с кодировками сделал запрос при запуске скрипта. Теперь $a1 будет генерироваться при запуске скрипта под каждой виндой заново.



Код:

Код: Выделить всё

#include 
#NoTrayIcon
$f = "C:\test.txt"
$aa = FileRead($f, FileGetSize($f))
$a2 = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
     $cmdRun = Run(@ComSpec & " /c ECHO " & $a2, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
		 $a1 = StdoutRead($cmdRun, -1)
For $i = 1 To StringLen($aa)
 $k = StringInStr($a1, StringMid($aa, $i, 1))
 If $k>0 Then $aa = StringReplace($aa, $i, StringMid($a2, $k, 1))
Next
msgbox(0,'',$aa)

P.S. Метод предложенный VelDmi в 121 посте не сработал при выводе в GUI скрипта.

Хотя здесь и писалось хочу напомнить что StdoutRead работает только в последних беттах.

P.P.S. bogomolv, VelDmi смотрел форум на сайте разработчиков, не нашёл таких решений как у Вас, хотя конечно все посты не читал но поиск поюзал основательно. Было бы неплохо закинуть код туда.
Аватара пользователя
ANGRO

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение ANGRO »

Creat0R хелп не ругай коли чайник. Я сам полный самовар в программировании, как здесь советовали пробую сотни вариантов кода и методом научного тыка пытаюсь разобраться. ИМХО читать не люблю особенно учебники. А объяснять основы программирования справка не обязанна. Если мозги текут отпишись в PM гуру, здесь люди отзывчивые помогут. А вообще для того чтобы писать листинги на чистом листе уходят годы обучения. Так что если не готов закажи нужную весч у знающих людей. Кстати справочку человек переводил бесплатно и нужно сказать спасибо за человекачасы и применённые знания.



Извените не удержался.
Аватара пользователя
Creat0R

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение Creat0R »

bogomolv


Цитата:



"Всему лучшему в себе я обязан книгам". А.М.Горький



А есть книги по AutoIt'у? (Хорошо, т.е понятно написанны).
Аватара пользователя
Creat0R

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение Creat0R »

ANGRO


Цитата:



хелп не ругай коли чайник.



Я и не ругал хелп. Конечно же огромное спасибо автору справки, просто я лично не узнал в ней то что мне нужно (также как и из справки которая сделана на английском) - Кстати, я если и возмущён по поводу этой справки, так это только по поводу того, что она не сильно информативна (та что на английском).





P.S:

А у автора этой справки, прошу искринние извинения, у меня небыло намеринии оскорблять, или ругать работу кого либо! -Просто как сказал ANGRO, я есть Чайник в сфере программирования (или самовар Изображение )
Аватара пользователя
ANGRO

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение ANGRO »

Решил собрать на основе кода из 196 поста что нить полезное так сказать для проверки в драйв тесте.

Почему-то получился пинг Изображение .



Код:

Код: Выделить всё

#include 
#include 
#NoTrayIcon
Opt("GUICloseOnESC", 0)
GUICreate("Пинг", 372, 304)
;GuiSetIcon("11.ico", 0)
$Edit1 = GUICtrlCreateEdit("", 2, 2, 370, 251, $ES_READONLY + $WS_VSCROLL, $WS_EX_CLIENTEDGE)
GUICtrlSetFont ($Edit1,10, 550, 0, "Lucida Console")
GuiCtrlSetBkColor($Edit1,0xf5f5f5)
GuiCtrlSetCursor($Edit1,2)
GuiCtrlCreateLabel("Домен или IP", 42, 257, 112, 20)
GuiCtrlCreateLabel("Кол-во запросов", 141, 257, 90, 20)
$Quant = GUICtrlCreateInput("5", 140, 279, 90, 20)
$Host = GUICtrlCreateInput("www.ru", 26, 279, 112, 20)
$Button_1 = GUICtrlCreateButton("Пинг", 240, 257, 105, 43)
;------------------------------------------------
$a2 = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
$cmdRun = Run(@ComSpec & " /c ECHO " & $a2, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
	 $a1 = StdoutRead($cmdRun, -1)
;------------------------------------------------
GUISetState(@SW_SHOW)
; GUI BUTTON PROCESSING
Do
	$msgP = GUIGetMsg()
Select	 
	Case $msgP = $Button_1
	    $ip = GUICtrlRead($Host)
	    $Quantity = GUICtrlRead($Quant)
		$PingI = Run(@ComSpec & " /c ping.exe -n "  & $Quantity & " " & $ip, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
		While 1
			$aa = StdoutRead($PingI, -1)
			If @error = -1 Then ExitLoop
			;-------------------------------------
				For $i = 1 To StringLen($aa)
                $k = StringInStr($a1, StringMid($aa, $i, 1))
                If $k>0 Then $aa = StringReplace($aa, $i, StringMid($a2, $k, 1))
                Next
			;-------------------------------------
			GUICtrlSetData($Edit1, StringStripWS($aa, 1) & @crlf, 1)
		Wend 
EndSelect
Until $msgP = $GUI_EVENT_CLOSE

Еслиб кто ещё прикрутил сюда кнопку стоп, а то я не додумался как выслать Control-C и главное куда.
Аватара пользователя
Creat0R

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение Creat0R »

Кто-то может мне помочь со следующей задачей:



Нужно запустить прогрессБар, и чтобы он автоматом закрылся, в тот момент как завершит свою работу определённый запущенный процесс в системе (а точнее запущеный скрипт *.bat файла) - и если возможно, то чтобы в окне прогресс бара, была видна бегущая надпись, с текстом который я выберу. (если нет, то хотябы поместить этот текст обычно, как в MsgBox).

Возможно таке осуществить?



Есть ещё вопрос:



При запуске диалога для выбора файла, возвращается значение в переменную $var (что-то в этом роде):



Код:

Код: Выделить всё

$var = FileOpenDialog("Выбирите архив...", "", "Zip (*.zip)")

Но когда я пытаюсь записать результат в файл:



Код:

Код: Выделить всё

FileWrite("c.tmp", $var)

То файл (c.tmp) сохраняется в том каталоге, где и был выбран архив.

Следовательно вопрос: Как мне осуществить сохранение файла (c.tmp), в текущем каталоге? т.е в том каталоге где и находится сам скрипт. Но чтобы ненужно было указывать полный путь, так как запускаться скрипт будет постоянно с разных мест.
Аватара пользователя
XXXler

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение XXXler »

Цитата:



Как мне осуществить сохранение файла (c.tmp), в текущем каталоге? т.е в том каталоге где и находится сам скрипт. Но чтобы ненужно было указывать полный путь, так как запускаться скрипт будет постоянно с разных мест.



Смотри в списке макро папок (в данном случае @ScriptDir)



Код:

Код: Выделить всё

$var = FileOpenDialog("Выбирите архив...", "", "Zip (*.zip)")
FileWrite(@ScriptDir&"\c.tmp", $var)
Аватара пользователя
DenchikK

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение DenchikK »

Подскажите пожалуйста, как можно совместить работу такого (примерного)

скрипта. На основе поставленной в ней задачи, хочу научится некоторым

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

возможной несуразности его (скрипта) логики.



По частям он работает, но как совместить его работу, моего ума, хелпов

и статей форума явно не достаточно...



Идея вот в чём:



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
Аватара пользователя
bogomolv

Re: [Архив - Часть 1.2] AutoIt скрипты

Сообщение bogomolv »

DenchikK


Цитата:



Вроде бы смог понятно обяснить...



Наоборот




Цитата:



По частям он работает, но как совместить его работу, моего ума, хелпов

и статей форума явно не достаточно.



По каким частям? Что нужно совмещать?




Цитата:



5. Нажатия на кнопку "Выход" должно приводить к выходу из скрипта на

любом этапе.



Этапе чего? У тебя нет никаких этапов. Если тебя интересует прекращение (отмена) выполняемого действия, то такая возможность зависит от самого выполняемого действия.




Цитата:



6. Не знаю, как придумать, чтоб при повторном нажатии на "Кнопка

Выбора" происходил бы select / deselect чекбокса.



Это придумали за тебя и назвали оператором GUICtrlSetState




Код:

Код: Выделить всё

      Case $msg = $button_1
        If GUICtrlRead($checkCN1)=$GUI_CHECKED Then
	  GUICtrlSetState($checkCN1,$GUI_UNCHECKED)
        Else
	  GUICtrlSetState($checkCN1,$GUI_CHECKED)
        EndIF


Цитата:



; Назначение этих двух строчек я не понимаю...



Ну, так не ставь их!
Ответить

Вернуться в «AutoIt»