Форум: "Начинающим";
Текущий архив: 2008.08.24;
Скачать: [xml.tar.bz2];
ВнизКомандная строка & 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.065 c