Войти

Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 [34] 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

Creat0R
31-10-2007, 23:31
fak1r,
Как сделать чтобы можно было скомпилированому файлу автоита передавать даные через ключи

В самом скрипте нужно распознавать их:

If $CmdLine[0] = 0 Then
MsgBox(16, "Ошибка", "Ком. строка пуста")
Else
Switch $CmdLine[1]
Case "/f"
MsgBox(64, "", "Путь к файлу: " & StringRegExpReplace($CmdLineRaw, ".*?/f", ""))
EndSwitch
EndIf

чтобы результат выполнения например функции ProcessList(выводит массив со списком процесов) выдавался в командную строку windows?
Если нужно запустить командную строку, то можно использовать макрос @ComSpec, вернуть значение в консоль думаю средствами AutoIt нельзя, я пробовал через StdWrite, но это только для дочерних процессов.

fak1r
01-11-2007, 13:09
If $CmdLine[0] = 0 Then
MsgBox(16, "Ошибка", "Ком. строка пуста")
Else
Switch $CmdLine[1]
Case "/f"
MsgBox(64, "", "Путь к файлу: " & StringRegExpReplace($CmdLine[1], ".*?/f", ""))
EndSwitch
EndIf

А как тогда запускать сприпт с ключём /f, когда запускаю так script.exe /f C:\win\1.exe
появляется окно в котором написано только "путь к файлу" и все.

Creat0R
01-11-2007, 13:24
fak1r,
появляется окно в котором написано только "путь к файлу" и все
Я сделал ошибку в скрипте, поправил свой пост.

fak1r
01-11-2007, 18:54
пасиба, а вот еще вопрос как тогда сделать что б можно было использовать несколько ключей?
И просто интересно Откуда переменые $CmdLineRaw и $CmdLine
они вроде ни где не объявлены, но автоит не ругается на это.

Creat0R
01-11-2007, 22:43
fak1r,
как тогда сделать что б можно было использовать несколько ключей?
Можн в цикле проходить по всем значениям ком. строки (я даже написал функцию для парсирования строк):


If $CmdLine[0] = 0 Then
MsgBox(16, "Ошибка", "Ком. строка пуста")
Else
For $i = 1 To $CmdLine[0]
Switch $CmdLine[$i]
Case "/f"
MsgBox(64, "", "Ком. строка: " & _GetCmdLine("/f"))
Case "/s"
MsgBox(64, "", "Ком. строка: " & _GetCmdLine("/s"))
Case "/b"
;И т.д...
EndSwitch
Next
EndIf

Func _GetCmdLine($aArgument)
Local $RetCmd = StringRegExp($CmdLineRaw, '(?i)' & $aArgument & '\s(.*?)\s', 3)
If Not IsArray($RetCmd) Or $RetCmd[0] = '' Then $RetCmd = StringRegExp($CmdLineRaw, '(?i)' & $aArgument & '\s(.*?)$', 3)
If IsArray($RetCmd) Then $RetCmd = $RetCmd[0]
Return StringStripWS($RetCmd, 3)
EndFunc

Откуда переменые $CmdLineRaw и $CmdLine
Это встроенные константы, первая содержит полную командную строку, а $CmdLine это массив со всеми подстроками (у него есть вроде ограничение в количестве строк).
В справке об этом всё изложено ;)

TERMINAL
02-11-2007, 15:23
Почему я немогу открыть экселевский файл с помощью скрипта?

Run ( @ScriptDir & "\2007.xls") - скрипт в этой же папке...

Maza Faka
02-11-2007, 15:33
TERMINAL
Попробуй так:

ShellExecute(@ScriptDir & "\2007.xls")

TERMINAL
02-11-2007, 15:40
Maza Faka,

D:\TEST\1.au3(2,38) : ERROR: ShellExecute(): undefined function.
ShellExecute(@ScriptDir & "\Test.txt")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
D:\TEST\1.au3 - 1 error(s), 0 warning(s)

Вот такая хрень вылазит-ничего не могу сделать....

Creat0R,

ShellExecute("MyFile.txt", "", @ScriptDir, "Print") - тоже не катит...

Creat0R
02-11-2007, 15:48
TERMINAL,
ShellExecute(): undefined function
Какой врсией AutoIt пользуешься? обнови до 3.2.8.1 (http://www.autoitscript.com/autoit3/downloads.shtml).
ShellExecute и ShellExecuteWait были добавлены (http://www.autoitscript.com/autoit3/docs/history.htm) в версии 3.2.2.0.

А если нет желания обновляться, то придётся выкручиваться так:

Run(@ComSpec & ' /c start "" "' & @ScriptDir & '\2007.xls"', @ScriptDir, @SW_HIDE)

;)

TERMINAL
02-11-2007, 16:20
Creat0R, Спасибо - получилось !
Возможно ли при переводе в *.exe возможно ли ставить пароль как в предыдущих версиях?
Есть ли уже обновлённый руский хелп к последней версии?

Creat0R
02-11-2007, 16:42
TERMINAL,
возможно ли ставить пароль как в предыдущих версиях?
Нет, в этом нет уже необходимости, разработчики решили что декомпилляции не будет в дальнейших версиях - советуют бекапить исходники ;)

Есть ли уже обновлённый руский хелп к последней версии?
В шапке есть ссылка - Русская справка (http://www.autoitscript.com/autoit3/docs.php), там все обновления ;)

Maza Faka
03-11-2007, 07:30
разработчики решили что декомпилляции не будет в дальнейших версиях »
То-то я не могу найти эту опцию, думал может глюк :)

TERMINAL
03-11-2007, 09:44
А если использовать компилятор от старой версии , а AutoIt обновлённый - глюков не будет?

Creat0R
03-11-2007, 09:51
А если использовать компилятор от старой версии , а AutoIt обновлённый - глюков не будет?
Будет, он просто не даст скомпилировать (если я правильно помню), и к тому же это то же самое что откатиться на предыдущую версию, т.к все поддерживаемые команды в новой версии не будут работать, старый интерпритатор (который встраивается в скомпилированный скрипт) не сможет их распознать.

TERMINAL
03-11-2007, 10:30
Creat0R, У меня есть на удалённой точке комп, с которым связываюсь по инету с помощью почты (меняемся пакетами (в рар архиве папка)). Я заслал туда якобы троянчик, который контролирует во сколько комп включается и выключается-для контроля и после все эти значения записуются в*.ini файл, он делается скрытым, человек этого не видит и незнает, архивирует папку и отсылает мне почтой. Вопрос:
1. Возможно ли делать запись данных с помощью IniWrite ( @HomeDrive & "\Пакет\Time.ini", "Запуск компа ", "Включение " & $Den & "." & $Mesyac & "." & $God , " " & $4as & "." & $Minute) не только в *.ini файл но и в другие (напрмер *.txt или даже в такой-неизвестный никому, просто потом присваивать расширение и смотреть или вообще без разширения.

2. Возможно ли данный файл не хранить именно в @HomeDrive & "\Пакет\, а спрятать его в любое место и как только подключается интернет, чтобы он мне лично отсылался на почту?

3. Возможно ли передать текстовое окно (MsgBox) cети по адресу (например 192.168.0.1)?

Maza Faka
03-11-2007, 16:53
TERMINAL
1.
$ini = "c:\myIni"
IniWrite($ini, "Запуск компа", "Включение", @MDAY &"-"& @MON &"-"& @YEAR &" "& @HOUR &":"& @MIN)
мог бы и сам попробовать, прежде чем постить.

2.

FileSetAttrib($ini, "+S")

Либо
FileMove("source", "dest" [, flag])


3.

Run(@ComSpec & " /c " & 'netsend 192.168.0.1 "Hello frend"', "", @SW_HIDE)


Либо скомпилировать сообщение типа

MsgBox(16, "Error", "Access denied")

и запускать на удалённом компьютере при помощи утилиты psexec.exe

kagorec
03-11-2007, 16:59
Привет, написал скрипт... но ненравится его некоректная работа.
Требуется:
;*** Стоп работает
;*** Пауза вкл/выкл работает
;*** Кликать с интервалом 10 (сотых) секунды правой и левой кнопкой мыши. включается и выключается отлично.
;*** Во время этих кликов, клавиша 1 всевремя просто включена и после двух минут включается на одну секунду клавиша 2. некоректно работает
Вот вырезка этого кода
Opt ("SendKeyDelay", 25 )
Opt ("WinTitleMatchMode", 4 )
Opt ("SendKeyDownDelay", 600 )
Opt ("MouseClickDownDelay", 25)

; Press Esc to terminate script, Pause/Break to "pause"

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet ("{F5}", "Auto_2" )
HotKeySet ("{F6}", "Auto_3" )
HotKeySet ("{F9}", "Left_Click" )
HotkeySet ("{F10}", "Stop" )
HotKeySet ("{F8}", "Right_Click")

;********** Auto 2 **********

Func Auto_2 ()
While (1)
Call ("Manashield_A1")
Call ("Delay_1")
Call ("Evilspirit_A1")
Call ("Delay_1")
WEnd
EndFunc

;********** Functions: Delay **********

; Delay Interval In Between Skills.

Func Delay_1 ()
Sleep (1300)
EndFunc

Func Delay_2 ()
Sleep (100)
Sleep (100)
EndFunc

;********** Functions: Evilspirit **********

Func Evilspirit_A1 ()
While 1
HotKeySet("{1}")
Sleep (10000)
WEnd
EndFunc

;********** Functions: Manashield **********

Func Manashield_A1 ()
While 1
Opt("SendKeyDelay", 120000)
HotKeySet("{2}")
Sleep (100)
WEnd
EndFunc

помогите исправить что нетак...
Тоесть скрипт нажал клавишу 1 (не удерживая),всевремя кликает правой или левой кнопкой, как истекло например две минуты, нажимается клавиша 2 на две секунды и потом обратно всевремя включена клавиша 1 (не удерживая)
-
Вроде разобрался, просто еще раз мануал пересмотрел почитал.
While 1
Opt("SendKeyDelay", 1000)
Sleep (100)
Send("{1 down}") ;Нажать клавишу 1
Sleep (10)
Send("{1 up}") ;Освободить клавишу 1
Sleep (120000)

Send("{2 down}") ;Нажать клавишу 2
Sleep (10)
Send("{2 up}") ;Освободить клавишу 2
Sleep (100)

WEnd

Creat0R
04-11-2007, 17:46
В последних бетках (http://www.autoitscript.com/forum/index.php?showtopic=19717) аутоита разработчики делают настоящий переворот!

Добавили долгожданный ControlTreeView, добавили около 200 UDF'ов из библиотеки A3LLibrary (а также много новых Include'ов), добавили не менее долгожданную функцию VarGetType(), добавили неплохую функцию SendKeepActive (для посылании клавиш с возможностью поддержки активности окна в которое нужно посылать клавиши), в области Dll функции тоже несколько обновок:

- Changed: DllCall() new method of passing types by reference using *.
- Changed: DllCall(): short_ptr, long_ptr, int_ptr types deprecated. Use short*, long* and int* respectively.
- Added: DllCall() new types of wparam and lparam.


И вообще многое изменили, теперь многие скрипты с “GUI-характером” придётся переделывать (не знаю радоваться или нет).

MaxxQ
04-11-2007, 18:12
Привет всем, подскажите как сделать вычисление графической области 0х0, 50х50 при появлении в которой контрольной суммы которая равна 1111111111 должно выполниться нажатие клавиши Z, при любой другой сумме клавишу X , как должна выглядеть функция?

fak1r
04-11-2007, 23:10
Подскажите пожалуйста как залить файл через форму на сайте.
Вообщем есть файло обменик на странице есть кнопка обзор,. нажимаешь на нее выбираешь файл и нажимаешь кнопку отправить, после загрузки файла обменик выдает ссылку на этот файл.
Так вот как нить можно на Автоите написать прогу чтобы из окно проги выбрать файл, нажать кнопку для его загрузки и по окончании загрузки получить ссылку от обменика?????




© OSzone.net 2001-2012