Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2015, 13:52   #1
Mishko78
Пользователь
 
Регистрация: 28.09.2015
Сообщений: 11
По умолчанию невидимое окно cmd, вызываемого из приложения

Подскажите, как сделать невидимым окно вызываемого приложения-архиватора из проекта, а именно окно cmd.

Код:
if not CreateProcess(nil, PChar(CmdLine), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo) then begin
    raise Exception.CreateFmt('Невозможно запустить программу',[CmdLine]);
  end;
Mishko78 вне форума Ответить с цитированием
Старый 01.10.2015, 14:15   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

насколько я помню, то нужно правильно заполнить поля StartupInfo

Код:
var
  si: STARTUPINFO;
  pi: PROCESS_INFORMATION;
begin
  Result:=0;
  try
      ZeroMemory(@si,sizeof(si));
      si.cb:=SizeOf(si);
      si.dwFlags := STARTF_USESHOWWINDOW;
      si.wShowWindow := SW_HIDE;
      if not CreateProcess(nil, PChar(CmdLine), nil, nil, False, 0, nil, nil, si, pi)
      then begin
          Exit;
      end;
      Result:=pi.hProcess;
      if AWaitForTerminate
      then begin
          WaitForSingleObject(pi.hProcess, INFINITE );
          CloseHandle(pi.hProcess);
          CloseHandle(pi.hThread);
      end;
  except
  end;
пример нагло спёрт (чуть переписан под TC) - отсюда

подробности о полях и флагах:

msdn: CreateProcess function

msdn: STARTUPINFO structure

ну и в догонку - ещё полезная (для общего развития) ссылка от гуру Delphi:
Блог GunSmoker-а. Этот проблемный CreateProcess...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.10.2015, 14:21   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:


  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
  StartupInfo.wShowWindow := SW_HIDE;

if not CreateProcess(nil, PChar(CmdLine), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo) then begin
    raise Exception.CreateFmt('Невозможно запустить программу',[CmdLine]);
  end;
Годится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.10.2015, 14:48   #4
Mishko78
Пользователь
 
Регистрация: 28.09.2015
Сообщений: 11
По умолчанию

Спасибо огромное Stilet
Mishko78 вне форума Ответить с цитированием
Старый 01.10.2015, 15:07   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да не за что )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cmd окно через Exec и WinExec spirit-ua Общие вопросы Delphi 11 02.09.2015 23:34
Запуск приложения Windows из cmd с параметром nn25 Помощь студентам 8 27.06.2015 17:46
Окно Windows-приложения ProgStud Помощь студентам 8 09.06.2012 23:50
Экранная лупа Vista+. Невидимое окно. TwiX Общие вопросы Delphi 7 22.06.2011 09:38
как сьэмулировать нажатие клавиш в невидимое окно Пепел Феникса Win Api 1 30.01.2009 09:40