본문 바로가기

프로그래밍/Delphi

[Delphi]외부 프로그램 실행시키기 Source

외부 프로그램을 실행시키는데 다음 함수를 사용하면 좋다 ^^
 
function ProcessExecute(CommandLine : TCommandLine; cShow : Word) : Integer;
var
  Rslt : LongBool;
  StartUpInfo : TStartUpInfo;
  ProcessInfo : TProcessInformation;
begin
  FillChar(StartUpInfo, SizeOf(StartUpInfo), 0);
  with StartUpInfo do
  begin
    cb := SizeOf(TStartUpInfo);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
    wShowWindow := cShow;
  end;
  Rslt := CreateProcess(PChar(CommandLine), nil, nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo);
  if Rslt then
    with ProcessInfo do
    begin
      WaitForInputIdle(hProcess, INFINITE);
      CloseHandle(hThread);
      CloseHandle(hProcess);
      result := 0;
    end
  else
    result := GetLastError;
end;

 //cShow는 프로세스의 메인 윈도우가 어떻게 표시될지를 나타내며 다음 값을 가진다
SW_HIDE                       : 윈도우를 숨기며, 다른 윈도우가 활성화 된다.
SW_MAXMIZE               :  윈도우를 최대화 시킨다
SW_MINIMIZE                : 윈도우를 최소화 한다
SW_RESTORE               : 최대화 또는 최소화 시키기 전의 크기로 윈도우를 표시한다
SW_SHOW                     : 윈도우를 현재 위치에 현재 크기로 표시한다.
SW_SHOWDEFAULT        : CreateProcess()에 넘겨진 TStartupInfo 구조체에 지정된 상태에 따라 윈도우를 보여줌
SW_SHOWMAXIMIZED    : 최대화된 상태로 윈도우를 활성화 하여 보여준다
SW_SHOWMINIMIZED     : 최소화된 상태로 윈도우를 활성화 하여 보여준다
SW_SHOWMINNOACTIVE : 최소화된 상태로 윈도우를 표시하되 현재 활성화된 윈도우는 그대로 둔다
SW_SHOWNA                 : 최대화 상태로 윈도우를 표시하되 현재 활성화된 윈도우는 그대로 둔다
SW_NOACTIVATE           : 가장 최근 크기와 위치로 윈도우를 보여주되 현재 활성화된 윈도우는 그대로 둔다
SW_SHOWNORMAL        : 가장 최근 크기와 위치로 윈도우를 보여주되, 윈도우가 이전에 최대화나 최소화 되었다면 그 위치가 저장된다.