Показать полную графическую версию : [решено] @start MyLoader.exe + {PARAMETERS == %1 %*} как?
Помогите!
Я написал обычный загрузчик для проги, смысл в том, что он делает кое какие
дополнительные действия и потом обычно запускает модуль:
ShellExecute("HprSnap6.exe", "", @ScriptDir)
Заморочка в том, что я люблю ещё батники привязывать к приложениею для поддержки консоли...
%SystemRoot%\system32\HprSnap.cmd:
@start C:\~\Apps\HprSnap\HprSnap6.exe "%1" %*
REM но вместо этого надо запускать лоадер
REM @start C:\~\Apps\HprSnap\HprSnap_Script_au3.exe "%1" %*
Но теперь с лоадером я теряю возможность запуска с параметрами:
# HprSnap C:\zzz.png
К сожалению такое не работает :)
ShellExecute("HprSnap6.exe", "%1", @ScriptDir)
А что такое opt_flag < Run ( "filename" [, "workingdir" [, show_flag[, opt_flag ]]] ) ?
Я не очень понимаю где и для чего юзать Run либо ShellExecute... Очень похожие две функции.
Какое решение может быть есть? http://forum.oszone.net/images/misc/progress.gif
Я ещё объясню если не очень понятно...
ShellExecute позволяет открывать различные файлы. Также, как вы действуете с ними обычно: открыть, изменить, печать, открыть свойства.
Run позволяет запускать исполняемые файлы.
А здесь надо просто с параметрами командной строки работать.
Переменная $CmdLine[0] содержит число параметров в командной строке.
$CmdLine[1] - первый параметр.
$CmdLine[n] - n-ый параметр.
$CmdLineRaw - содержит всю строку параметров.
ShellExecute("HprSnap6.exe", $CmdLineRaw, @ScriptDir)
Запустит HprSnap6.exe с параметрами, которые были переданы скрипту при запуске.
теряю возможность запуска с параметрами
См. в справке (http://www.autoitscript.com/autoit3/docs/intro/running.htm#CommandLine), там есть примеры по работе с параметрами переданными в скрипт с внешних приложении.
Сам скрипт выполнит приложение с ошибкой. Надо компилить, так как скрипт сам есть параметр :)
Это у меня похожие ошибки были с командами *.msi когда я не врубался, что это лишь правая часть для msiexec.exe
Спасиб! Кажись работает!
Почему-то ShellExecute("HprSnap6.exe", $CmdLineRaw, @ScriptDir)
из батника всегда запускается с параметрами, следовательно пустой параметр всегда вызывает глюк.
батник:
@start C:\~\Apps\HprSnap\script.exe "%1" %*
хотя сам скрипт.EXE напрямую кликом запускает прогу "тихо" и с параметрами тоже запускает корректно.
смысл ошибки - файл не найден, ну типа ожидается, что чё-то на входе должно быть, чего там нет.
хм. может батник кривой для этой задачи...
semiono, Возможно параметры нужно в кавычки заключать? Хотя проблема для меня звучит смутно.
Какой-то нонсенс! Когда на вход попадает file.png то скрипт это корректно передаёт через маску "%1"
Но когда на входе пусто, то скрипт эту же маску считает за файл и пытается загрузить %1 как будто это картинка!
Правда я одно не понимаю это происходит на входе скрипта или на входе HprSnap6.exe приложения которое скрипт
запускает с передачей параметров. Хотя не легче если б знал.
Хотя проблема для меня звучит смутно »угу, без конкретных примеров кода, воспроизводящих результат, это гадание на кофейной гуще
Я тоже не экстрасенс. Может быть вы просто не проверяете в скрипте, есть параметры или их нет?
Да не проверяю, потому что не умею. Для меня это именно трудная задача...
Логически мыслить могу, но надо ещё и опыт в скрипте иметь.
Параллельно на ассемблере пытался тоже это разрешить :)
И надо сказать не трудней чем на автоите. Но косяков тоже понаделал...
Всё верно, самое главное проверить, есть ли на входе параметры или нет и соответственно этому
запускать программу, либо с переданными в неё параметрами либо наголо как есть!
Я извиняюсь, но я много итак написал чтоб объяснить, скрипт не могу, так как я сам это спрашиваю.
:)
Если честно, то я не очень понял как это использовать
$CmdLine[1] - первый параметр.
$CmdLine[n] - n-ый параметр.
Потому как кроме $CmdLineRaw и $CmdLine[0] в ShellExecute("HprSnap6.exe", $CmdLineRaw, @ScriptDir) ничего не впихнуть. Через & чтоли? Но их связки тоже либо мне не понятно либо смысл какой!
$CmdLine[0] & $CmdLine[1] & $CmdLine[2] когда в документации чё-то сказанно типа 0 - это сам файл чтоль...
Вообщем я это не осилил.
Sylver Dragon, подскажи как проверять?
А можно узнать API используемые в автоит?
На msdn из функций директорий всего две - GetCurrentDirectory, SetCurrentDirectory.
А как тогда получается @ScriptDir ? Что за WinAPI это?
$CmdLine[0] - число параметров!
Пример:
С:\Test.exe /param1 -param2 /para3 .4 "param 5"
$CmdLine[0] = 5
$CmdLine[1] = /param1
$CmdLine[2] = -param2
$CmdLine[3] = /para3
$CmdLine[4] = .4
$CmdLine[5] = param 5
$CmdLineRaw = /param1 -param2 /para3 .4 "param 5"
@ScriptDir? Небось просто получает путь к файлу скрипта, а потом обрезает его.
блин, я даже сейчас призадумался!
$CmdLine[0] - число параметров!
$CmdLine[0] = 5 как пять, когда это ноль! и тока дошло, этож индекс а не значение, вот я туплю! :)
теперя я понимаю что меня тоже не понимают :)
Sylver Dragon, а ты про проверку что-то говорил?
А можно чекнуть, когда параметров в команд строке нету, чтобы $CmdLineRaw убрать на тот случай?
If $CmdLineRaw = 0 then ...
ShellExecute(...."")
чтоли так? А хотя это идея, уже сам понял...
If $CmdLine[0] > 0 Then
...
EndIf
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.