Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.24;
Скачать: CL | DM;

Вниз

Командная строка & Delphi   Найти похожие ветки 

 
programmer90   (2008-07-17 11:47) [0]

Здравствуйте уважаемые мастера!
Как управлять коммандной строкой средствами Delphi? Под словом управлять
подразумевается передача параметров коммандной строке. Пример: я хочу запустить исполняемый
файл находящийся в  d:\folder\exe1.exe  при этом передать ей параметр pause после выполнения, то есть увидеть результат выполнения. Использовал ShellExecute, WinExec с их помощью нельзя передать
параметр командной строке. Приложение при запуске в Windows-e "убегает", то есть быстро выполняется, кароч  16-битное приложение. Заранее всем спасибо.


 
{RASkov} ©   (2008-07-17 11:50) [1]

запустить cmd тем же Shellexecute в котором параметром запустить приложение...


 
Ega23 ©   (2008-07-17 11:57) [2]

Открываешь Notepad, пишешь там
call d:\folder\exe1.exe
pause


Сохраняешь это как my_cmd.cmd

Через ShellExecute запускаешь my_cmd.cmd


 
brother ©   (2008-07-17 11:57) [3]

> с их помощью нельзя передать
> параметр командной строке

да ты что???


 
brother ©   (2008-07-17 11:59) [4]

> параметр pause после выполнения

что-то новенькое...

> call d:\folder\exe1.exe
> pause

зачем, а так все так и надо
зы этот скрипт можно и самому из программы в фалй записать)


 
{RASkov} ©   (2008-07-17 12:02) [5]

Дополню к [1]
...команды разделяются двумя & т.е. нечто так "/k cls && dir C: && pause"
Вместо любой команды, например вместо cls, можно написать полное имя твоей программы....
Пример:
ShellExecute(Handle, nil, PChar(GetEnvironmentVariable("ComSpec")), "/c notepad && pause", nil, SW_SHOWNORMAL);


 
{RASkov} ©   (2008-07-17 12:08) [6]

+ ...возможно вместо pause будет достаточно параметра /k вместо /c из последней строки примера в [5]


 
programmer90   (2008-07-17 17:47) [7]

Проверил код  
[5], все работает в D2007 for Win32,  а  в .NET этот код не работает.
ShellExecute(Handle, nil, PChar(GetEnvironmentVariable("ComSpec"))- здесь в конце останавливается курсор и пишет ошибку "Invalid Typecast".
Придется через скрипт [2]. Через скрипт, конечно надежнее- везде работать будет, но то что показано [5] , мне больше подходило потому что, он сразу делает паузу, а в скрипте он сначала показывает директорию, затем потом пауза, но это конечно мелочи жизни. Другой минус скрипта то что он не супер, хотя это совсем не  страшно пока, главное в .NET работает. Буду очень благодарен, кто сможет решить задачу в .NET, без создания скрипта .
Всем  большое спасибо, узнал много интересного...


 
programmer90   (2008-07-18 12:53) [8]

Я немного подумал, а что если вместо  ShellExecute(Handle, nil, PChar(GetEnvironmentVariable("ComSpec")), "/c notepad && pause", nil, SW_SHOWNORMAL);  насписать ShellExecute(Handle, nil," cmd", "/c notepad && pause", nil, SW_SHOWNORMAL); теперь и в .NET работает...
А несчет [6], я проверил  так
ShellExecute(Handle, nil, PChar(GetEnvironmentVariable("ComSpec")), "/c notepad && pause", nil, SW_SHOWNORMAL); -работает,
ShellExecute(Handle, nil, PChar(GetEnvironmentVariable("ComSpec")), "/K notepad ", nil, SW_SHOWNORMAL); так не работает...


 
{RASkov} ©   (2008-07-18 16:25) [9]

> а что если вместо

> Я немного подумал

Подумать чуть больше? :)

Подсказка: интерпретатор командной строки может иметь отличное имя от cmd.... и тут твоя программа "упала".

> А несчет [6], я проверил  так

и я проверял, и просто так бы не отвечал... Хотя я намерянно указал в начале [6] "...возможно ...."

ЗЫ: Я с нет незнаком, поэтому откланиваюсь.... сорри.



Страницы: 1 вся ветка

Текущий архив: 2008.08.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
15-1214997047
Smile
2008-07-02 15:10
2008.08.24
:(


15-1215103763
turbouser
2008-07-03 20:49
2008.08.24
Vista.


15-1215067842
Slider007
2008-07-03 10:50
2008.08.24
С днем рождения ! 3 июля 2008 четверг


15-1214988339
Dennis I. Komarov
2008-07-02 12:45
2008.08.24
У ICQ опять чегото поменяли?


15-1215575271
AEN
2008-07-09 07:47
2008.08.24
Хочу сделать пробный сайт