Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как запустить из АПИ досовскую команду? Как запустить из АПИ досовскую команду? 
:(
    Опции темы
Cyri
Дата 6.12.2004, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 23.7.2004

Репутация: нет
Всего: нет



Как запустить из АПИ досовскую команду, а управление оставить в окне приложения. Т.е. чтобы можно было ввести время запуска команды, остановить выполенине нажатием кнопки, просмотреть результат выполнеиня в Мемо-поле, завершить приложение и т.д. Объясните на примере команды Dir. Надо иметь возможность задавания времени выполения (начала работы) и передавать данные в файл. Только подробно.
Заранее спасибо. Кирилл.
PM MAIL   Вверх
Song
Дата 6.12.2004, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: нет
Всего: 4



Cyri
Код

ShellExecute(Handle,nil,'cmd.exe',...)



--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Alex
Дата 6.12.2004, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 6
Всего: 162



Cyri DRKB->Системные функции и WinAPI->Работа с чужими процессами->Как вывести результат работы консоли в Memo?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Girder
Дата 6.12.2004, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



К примеру вот так:
Код
function RunCommand(const Command,Dir:string; Lines:TStrings; var CaretPos:TPoint):boolean;
var StartUpInfo:TStartupInfo;
   ProcessInfo:TProcessInformation;
   PrConsole:String;
   pRead,pWrite,Bytes,r:cardinal;
   s:string;
   sAttr:TSecurityAttributes;
   pDir:PChar;
begin
Result:=false;
sAttr.nLength:=SizeOf(SECURITY_ATTRIBUTES);
sAttr.bInheritHandle:=true;
sAttr.lpSecurityDescriptor:=nil;
if DWord(CreatePipe(pRead,pWrite,@sAttr,0))=0 then Exit;
FillChar(StartUpInfo,SizeOf(TStartUpInfo),0);
StartUpInfo.cb:=SizeOf(TStartUpInfo);
StartUpInfo.dwFlags:=STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW;
StartUpInfo.wShowWindow:=SW_Hide;
StartUpInfo.hStdOutput:=pWrite;
StartUpInfo.hStdError:=pWrite;
PrConsole:='cmd.exe';
s:=Trim(Command);
if s<>'' then PrConsole:=PrConsole+' /K '+s;
pDir:=nil;
if trim(Dir)<>'' then pDir:=PChar(Dir);
if CreateProcess(nil,PChar(PrConsole),nil,nil,true,NORMAL_PRIORITY_CLASS,nil,pDir,StartUpInfo,ProcessInfo) then
 begin
  WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
  CloseHandle(ProcessInfo.hThread);
  CloseHandle(ProcessInfo.hProcess);
  PeekNamedPipe(pRead,nil,0,nil,@Bytes,nil);
  if Bytes<>0 then
   begin
    SetLength(s,Bytes);
    ReadFile(pRead,PChar(s)^,Length(s),r,nil);
    OemToChar(PChar(s),PChar(s));
    Lines.Add(s);
    CaretPos:=Point(Length(trim(Lines.Strings[Lines.Count-1])),Lines.Count-1);
    SetLength(s,0);
    Result:=true;
   end;
 end;
end;


Во вложение пример использования данной функции... Ты можеш работать с Memo как буд-то ты в окне сессии Dos, т.е. вводить команды: dir, cd \, запускать приложения и т.д.

PS: Кое-что мне было лень делать... но думаю что идея будет ясна smile

Удачи.

Это сообщение отредактировал(а) Girder - 6.12.2004, 19:08

Присоединённый файл ( Кол-во скачиваний: 133 )
Присоединённый файл  CMD_Girder.zip


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.