| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Помогите с paramstr |
| Автор: Sniper 8.5.2002, 21:05 |
| Вот допустим такой параметр yyyy.exe -ggggg Так вот как мне запустить прогу с введённым параметром...??? И ещё как поступить если параметров несколько...??? Где-то слышал, что надо paramcount вроде бы использовать!!!!!! |
| Автор: Vit 8.5.2002, 21:18 |
| Paramcount - показывает сколько у тебя параметров передано Paramstr(0) - это имя с путем твоей программы Paramstr(1) - имя первого параметра Paramstr(2) - имя второго параметра и т.д. Если ты запускаешь: с:\myprog.exe /a -b22 c:\dev то Paramcount будет равен 3 Paramstr(0) будет равен с:\myprog.exe Paramstr(1) будет равен /a Paramstr(2) будет равен -b22 Paramstr(3) будет равен c:\dev |
| Автор: Baa 8.5.2002, 21:24 |
| Наверно ты про это...Массив Params заполняеться параметрами, с которыми была вызвана программа...Код написан теоретически var Params : array [0..$FF] of String; I : Byte; begin for I := 0 to ParamCount do Params [I] := ParamStr(I); |
| Автор: Sniper 8.5.2002, 22:15 |
| Хорошо, а как тогда запустить прогу с параметрами... Как я понял что-то надо написать здесь?? program Project2; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Как мне допустим запустить например: qqq.exe -b22 |
| Автор: TwoK 8.5.2002, 22:48 |
| Хм, ты имеешь в виду свою прогу, которую ты создаешь? в меню "Run" есть "Parameters", там в комбобоксе прописываешь все параметры, которые душе угодно. Твоя прога будет запускаться с этими параметрами. Соответственно, когда эта строчка пустая, параметров командной строки не будет. А если не свою, а чужую - тут тебе помогут CreateProcess, WinExec, ShellExecute, ... Удачи. |
| Автор: Sniper 8.5.2002, 23:33 |
| Вот допустим Counter-Strike запускается так hl.exe -console -game cstrike можно так hl.exe - console Короче, что бы пользователь их мог вводить! |
| Автор: Vit 8.5.2002, 23:44 |
| ShellExecute(Handle, 'Open', YourProgramName, yourparameters, yourprogrampath, sw_restore) Например для твоего случая: ShellExecute(Handle, 'Open', 'hl.exe', '-console -game cstrike', 'c:\games\contrstrike', sw_restore); |
| Автор: Sniper 9.5.2002, 00:01 |
| А как пользователь их будет вводить? |
| Автор: TwoK 9.5.2002, 00:10 |
| Хм, ну, наверное, с клавиатуры... Sorry, но вопрос "как" ставит в тупик |
| Автор: Sniper 9.5.2002, 00:16 | ||
Не.... ну если в обработчике "баттны" написать сею строчку... то запустится CS с параметрами -console -game cstrike....... но я ведь пишу свою прогу!!!!! |
| Автор: TwoK 9.5.2002, 00:25 |
| То есть ты хочешь запустить _ту программу, которую ты пишешь_, с параметрами, которые введет пользователь? Так создай ему ярлык и пусть балуется Или напиши прогу №2, там вводи этот текст и шеллекзекуть свою первую прогу Или если нет, то на 3 сообщения выше "в меню "Run" есть "Parameters", там в комбобоксе прописываешь все параметры, которые душе угодно. Твоя прога будет запускаться с этими параметрами. Соответственно, когда эта строчка пустая, параметров командной строки не будет." Описал бы нормально: я пишу программу "е-мое". Она должна взять у пользователя параметры командной строки и запустить"... ну и в таком же духе далее. А не "если-если". |
| Автор: Vit 9.5.2002, 00:55 |
| Ставишь на форму TEdit и кнопку. На обработчике нажатия кнопки пишешь: ShellExecute(Handle, 'Open', 'hl.exe', PChar(Edit1.text), 'c:\games\contrstrike', sw_restore); |
| Автор: Sniper 9.5.2002, 18:49 |
| Так... описываю по-нормальному! Вот я пишу прогу :-))) Создаю пользователю обычную иконку БЕЗ параметров. Он [пользователь] параметры эти не знает... :-))) Но потом я ему говорю эти параметры.... Он [пользователь] их вводит в иконке и прога запускается с ВВЕДЁННЫМИ параметрами ( пользователь может вводить только некоторые параметры!!! Вопросы: Как запустить прогу только с введёнными параметрами(которые прописаны в иконке)??? Так мой вопрос понятен |
| Автор: Vit 9.5.2002, 19:51 | ||||||
| Ты совсем запутал! Если ты добавил параметры к иконке (я думаю что имеется ввиду shortcut) то конечно программа запустится именно с этими параметрами, ничего писать не надо. Короче чтO именно тебе надо - даю варианты ответа: 1) Запустить чужую программу из своей с параметрами? Используй - ShellExecute - пример я привел 2) Твою программу запустили с параметрами и в ответ на это ты должен сделать какие-то действия? Используй Paramstr, Paramcount 3) Твою программу запустили с параметрами и ты в свою очередь должен запустить чью-то программу с этими же параметрами - используй оба первых ответа вместе. 4) Тебе надо запустить какую-нибудь программу с параметрами из виндов - пишешь в окне Запуска ("Run") myprogram.exe /myparam 5) Тебе надо создать иконку (shortcut) для запуска программы с параметрами - посмотри FAQ на этом форуме - тема "Как создать Shortcut" 6) Тебе надо создать иконку (shortcut) для запуска программы с параметрами в ручную из Windows - там в свойствах иконки есть пункт параметры - вписываешь их туда 7) Узнать с какими параметрами кто-то запустил чужую программу? - это единственный вопрос на который я не знаю ответ. Всё! Ты извини у меня не хватает фантазии придумать что-то еще, что бы можно сделать с параметрами! Пожалуйста - прочитай этот список и напиши какой пункт тебе надо реализовать. Твой последнее сообщение отличается крайней непонятностью:
Имеется ввиду Shortcut или иконка в Listview, или иконка в Treeview или ты просто имеешь ввиду объект TIcon, или ты на Canvas эту иконку рисуешь? Что такое параметры иконки? Параметры бывают или у запускаемого приложения или в кверях, или это Shortcut, который пользователь запускает с параметрами?
Что значит ввести параметры в иконке? Нарисовать на ее Canvas'e? Или ты под иконкой подразумеваешь программу? Или напротив иконки нарисованной на форме у тебя есть Edit Box? Или твоя программа рисует только иконку и ловит сообщения клавиатуры прямо в него?
Запуск проги осуществляется через ShellExecute, а по поводу иконки в которую что-то введено - это напоминает мне "кубический трёхчлен" - умозрительно представить себе это я не могу! Давай ты еще раз напишешь сообщение, используя стандартную терминологию: Иконка - квадратное изображение 16х16 или 32х32 Shortcut - ярлык, программа с расширением lnk, pif |
| Автор: Sniper 9.5.2002, 20:29 |
| Из всего представленного многообразия мне нужен пункт 2!! |
| Автор: Vit 9.5.2002, 20:35 |
| Посмотри мой самый первый ответ в эту нему - там приводиться объяснение. Например поставь форму, на нее кнопку, на нажатие кнопки напиши код: showmessage(paramstr(1)); Откомпиллируй программу. Закрой Дельфи. Запусти свою программу с параметрами или из меню Run или создав ярлык с параметрами. Нажми кнопку, тебе выскочит окожко в котором будет показан первый параметер. |
| Автор: Sniper 9.5.2002, 21:32 |
| А что надо написать в коде, что бы этот параметр ВЫПОЛНИЛСЯ!!!! Что-то типа: if paramstr(1) then begin ........ end; Так что-ли |
| Автор: Vit 9.5.2002, 22:02 | ||
| Что значит выполнился? Выполнить можно только комманду, а параметер это просто строка, набор букв, выполнить ее нельзя - ты можешь только проверить на наличие строки и если она присутствует, то выполнить какое либо действие, это действие ты должен написать сам, никаких стандартных действий нет. Например у тебя возможно 3 параметра: Если параметер = "/v" то выдать сообщение, если параметер "/c" то покрасить форму в синий цвет, если параметер "/f" - поменять заголовок формы:
Поставь этот код на событие формы onActivate, откомпиллируй и попробуй запустить программу с одним из 3х указанных параметров и ты увидишь что произойдет. |
| Автор: Sniper 10.5.2002, 21:50 |
| Спасибо.... это мне и надо было!!!!! (я наверное очень витеевато задал свой первый вопрос..... ;-)))) |