Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Командная строка & 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 в котором параметром запустить приложение...


Наверх

Титульная страница Поиск, карта сайта Написать письмо