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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что-то типа system() 
:(
    Опции темы
asdf
Дата 25.9.2004, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



Значит, нужно запустить консольный exe из окна. Было бы чЮдесно, если б:
0. я знал как вообще его вызвать biggrin.gif
1. окно ждало завершения исполнения exe.
2. после завершения exe окно было активным.
3. окно было активным при исполнении exe.
4. консольное окно вообще не появлялось.
qstn.gif
--------------------
... 
PM MAIL   Вверх
Ripper
Дата 25.9.2004, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

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



Ненаю тока как сделать чтобы программа ждала завершения...ну можеш палзу поставить .
Код

uses shellapi;

...
ShellExecute(Handle,'open','c:\myconsoleprog.exe',nil,nil SW_HIDE)

Сделать окно проги активным - SetFocus;


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
asdf
Дата 25.9.2004, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



thx, Ripper

хммм, а как паузу поставить?
--------------------
... 
PM MAIL   Вверх
Ripper
Дата 25.9.2004, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 30.6.2004
Где: г. Москва

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



sleep()


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
maxim1000
Дата 26.9.2004, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



чтобы ждать окончания процесса, нужно создать егос помощью CreateProcess
эта функция возвращает handle нового процесса
потом можно использовать функцию WaitForSingleObject для ожидания окончания процесса
пример создания процесса: MSDN::PlatformSDK::Base Services::DLLs,Processes and Threads
работа с ожидаемыми объектами ...::Base Services::Synchronization


--------------------
qqq
PM WWW   Вверх
asdf
Дата 27.9.2004, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



Цитата
чтобы ждать окончания процесса, нужно создать егос помощью CreateProcess
эта функция возвращает handle нового процесса
потом можно использовать функцию WaitForSingleObject для ожидания окончания процесса
пример создания процесса: MSDN::PlatformSDK::Base Services::DLLs,Processes and Threads
работа с ожидаемыми объектами ...::Base Services::Synchronization

MSDN нет bored.gif


sample.gif
--------------------
... 
PM MAIL   Вверх
maxim1000
Дата 27.9.2004, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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





--------------------
qqq
PM WWW   Вверх
asdf
Дата 27.9.2004, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



56kbps =)))))))))))))))))))))))))))))))))))))))))))))))))))))))

Это сообщение отредактировал(а) shurick - 27.9.2004, 19:25
--------------------
... 
PM MAIL   Вверх
maxim1000
Дата 27.9.2004, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



не надо его качать
там можно посмотреть интересующий раздел в on-line


--------------------
qqq
PM WWW   Вверх
asdf
Дата 27.9.2004, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



мммммдддддааааа sad.gif
Delphi 5 не соответствует ANSI C



перевести ннннннииии ммммммммааааааааггггггггггууууууууууууу T_T
--------------------
... 
PM MAIL   Вверх
p0s0l
Дата 27.9.2004, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

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



Цитата
0. я знал как вообще его вызвать
1. окно ждало завершения исполнения exe.


Качай DRKB - пригодится!
Это оттудава:

Как запустить программу и подождать ее завершения?
Код

Автор: Fabrнcio Fadel Kammer

Пример показывает как из Вашей программы запустить внешнее приложение и подождать его завершения.

function ExecAndWait(const FileName, Params: ShortString; const WinState: Word): boolean; export;  
var  
 StartInfo: TStartupInfo;  
 ProcInfo: TProcessInformation;  
 CmdLine: ShortString;  
begin  
 { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }  
 CmdLine := '"' + Filename + '" ' + Params;  
 FillChar(StartInfo, SizeOf(StartInfo), #0);  
 with StartInfo do  
 begin  
   cb := SizeOf(StartInfo);  
   dwFlags := STARTF_USESHOWWINDOW;  
   wShowWindow := WinState;  
 end;  
 Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,  
                         CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,  
                         PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo);  
 { Ожидаем завершения приложения }  
 if Result then  
 begin  
   WaitForSingleObject(ProcInfo.hProcess, INFINITE);  
   { Free the Handles }  
   CloseHandle(ProcInfo.hProcess);  
   CloseHandle(ProcInfo.hThread);  
 end;  
end;  


А вот пример вызова этой функции:

ExecAndWait( 'C:\windows\calc.exe', '', SW_SHOWNORMAL)  

Параметр FileName = Имя внешней программы.
Параметр Params = Параметры, необходимые для запуска внешней программы
Параметр WinState = Указывает - как будет показано окно:
Для этого параметра мы можем так же использовать следующие константы:
SW_HIDE, SW_MAXIMIZE, SW_MINIMIZE, SW_SHOWNORMAL

Взято с Исходников.ru http://www.sources.ru



Цитата
после завершения exe окно было активным.

Делай SetForegroundWindow (Form1.Handle) после того, как консольное приложение окончило работу (после WaitForSingleObject).

Цитата
4. консольное окно вообще не появлялось.

Делай ExecAndWait с параметром SW_HIDE - пример:
Код
ExecAndWait( 'c:\windows\system32\cmd.exe', '', SW_HIDE)





--------------------
С уважением, г-н Посол.
PM   Вверх
asdf
Дата 4.10.2004, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



Делал всё через ExecAndWait с параметром SW_HIDE:
под WinXP всё работало, под Win2000 - exe из под C++ Builder 5.0 идут, а сделанные, как я понял, в Turbo C++ 3.0, показывают окно при исполнении sad.gif
что делать?
qstn.gif
--------------------
... 
PM MAIL   Вверх
asdf
Дата 4.10.2004, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



Может это быть из-за ограниченных привилегий? qstn.gif
--------------------
... 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.3494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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