![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Командная строка & Delphi [D7, XP]
programmer90 © (2008-07-17 11:47:00)Здравствуйте уважаемые мастера!
Как управлять коммандной строкой средствами Delphi? Под словом управлять
подразумевается передача параметров коммандной строке. Пример: я хочу запустить исполняемый
файл находящийся в d:\folder\exe1.exe при этом передать ей параметр pause после выполнения, то есть увидеть результат выполнения. Использовал ShellExecute, WinExec с их помощью нельзя передать
параметр командной строке. Приложение при запуске в Windows-e "убегает", то есть быстро выполняется, кароч 16-битное приложение. Заранее всем спасибо.
{RASkov} (2008-07-18 16:25:00) [1]> а что если вместо
> Я немного подумал
Подумать чуть больше? :)
Подсказка: интерпретатор командной строки может иметь отличное имя от cmd.... и тут твоя программа "упала".
> А несчет [6], я проверил так
и я проверял, и просто так бы не отвечал... Хотя я намерянно указал в начале [6] "... возможно...."
ЗЫ: Я с нет незнаком, поэтому откланиваюсь.... сорри.
programmer90 (2008-07-18 12:53:00) [2]Я немного подумал, а что если вместо 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); так не работает...
programmer90 (2008-07-17 17:47:00) [3]Проверил код
[5], все работает в D2007 for Win32, а в .NET этот код не работает.
ShellExecute(Handle, nil, PChar(GetEnvironmentVariable('ComSpec'))- здесь в конце останавливается курсор и пишет ошибку "Invalid Typecast".
Придется через скрипт [2]. Через скрипт, конечно надежнее- везде работать будет, но то что показано [5] , мне больше подходило потому что, он сразу делает паузу, а в скрипте он сначала показывает директорию, затем потом пауза, но это конечно мелочи жизни. Другой минус скрипта то что он не супер, хотя это совсем не страшно пока, главное в .NET работает. Буду очень благодарен, кто сможет решить задачу в .NET, без создания скрипта .
Всем большое спасибо, узнал много интересного...
{RASkov} (2008-07-17 12:08:00) [4]+ ...возможно вместо pause будет достаточно параметра /k вместо /c из последней строки примера в [5]
{RASkov} (2008-07-17 12:02:00) [5]Дополню к [1]
...команды разделяются двумя & т.е. нечто так '/k cls && dir C: && pause'
Вместо любой команды, например вместо cls, можно написать полное имя твоей программы....
Пример:
ShellExecute(Handle, nil, PChar(GetEnvironmentVariable('ComSpec')), '/c notepad && pause', nil, SW_SHOWNORMAL);
brother (2008-07-17 11:59:00) [6]> параметр pause после выполнения
что-то новенькое...
> calld:\folder\exe1.exe
> pause
зачем, а так все так и надо
зы этот скрипт можно и самому из программы в фалй записать)
Ega23 (2008-07-17 11:57:00) [7]Открываешь Notepad, пишешь там
call d:\folder\exe1.exe
pause
Сохраняешь это как my_cmd.cmd
Через ShellExecute запускаешь my_cmd.cmd
brother (2008-07-17 11:57:00) [8]> с их помощью нельзя передать
> параметр командной строке
да ты что???
{RASkov} (2008-07-17 11:50:00) [9]запустить cmd тем же Shellexecute в котором параметром запустить приложение...