Показать полную графическую версию : [архив - Часть 2] AutoIt скрипты
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, но это только для дочерних процессов.
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
появляется окно в котором написано только "путь к файлу" и все.
fak1r,
появляется окно в котором написано только "путь к файлу" и все
Я сделал ошибку в скрипте, поправил свой пост.
пасиба, а вот еще вопрос как тогда сделать что б можно было использовать несколько ключей?
И просто интересно Откуда переменые $CmdLineRaw и $CmdLine
они вроде ни где не объявлены, но автоит не ругается на это.
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") - тоже не катит...
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 возможно ли ставить пароль как в предыдущих версиях?
Есть ли уже обновлённый руский хелп к последней версии?
TERMINAL,
возможно ли ставить пароль как в предыдущих версиях?
Нет, в этом нет уже необходимости, разработчики решили что декомпилляции не будет в дальнейших версиях - советуют бекапить исходники ;)
Есть ли уже обновлённый руский хелп к последней версии?
В шапке есть ссылка - Русская справка (http://www.autoitscript.com/autoit3/docs.php), там все обновления ;)
Maza Faka
03-11-2007, 07:30
разработчики решили что декомпилляции не будет в дальнейших версиях »
То-то я не могу найти эту опцию, думал может глюк :)
TERMINAL
03-11-2007, 09:44
А если использовать компилятор от старой версии , а AutoIt обновлённый - глюков не будет?
А если использовать компилятор от старой версии , а 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
Привет, написал скрипт... но ненравится его некоректная работа.
Требуется:
;*** Стоп работает
;*** Пауза вкл/выкл работает
;*** Кликать с интервалом 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
В последних бетках (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-характером” придётся переделывать (не знаю радоваться или нет).
Привет всем, подскажите как сделать вычисление графической области 0х0, 50х50 при появлении в которой контрольной суммы которая равна 1111111111 должно выполниться нажатие клавиши Z, при любой другой сумме клавишу X , как должна выглядеть функция?
Подскажите пожалуйста как залить файл через форму на сайте.
Вообщем есть файло обменик на странице есть кнопка обзор,. нажимаешь на нее выбираешь файл и нажимаешь кнопку отправить, после загрузки файла обменик выдает ссылку на этот файл.
Так вот как нить можно на Автоите написать прогу чтобы из окно проги выбрать файл, нажать кнопку для его загрузки и по окончании загрузки получить ссылку от обменика?????
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.