Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[9511] Re:[질문] 도스 실행파일 종료 여부를 알아두려면 어떻게 해야하나요?
박지훈.임프 [cbuilder] 1238 읽음    2004-05-14 02:28
C++Builder쪽의 팁 게시판에 있는 내용입니다.

C++ 코드라 좀 보시기가 곤란하실 거 같아서 대충 델파이 코드로 바꿔봤습니다.
실행하는 도스 프로그램은 델파이7의 dcc32.exe 컴맨드라인 컴파일러입니다.
당근 직접 실행하실 프로그램의 패스로 바꿔주셔야 됩니다.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure Button1Click(Sender: TObject);
  private
    NowClose: boolean;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  NowClose := false;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  NowClose := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  start: TStartupInfo;
  sec: TSecurityAttributes;
  pinfo: TProcessInformation;
  waitresult: Dword;
begin
  FillChar(start, sizeof(STARTUPINFO), 0);
  start.cb := sizeof(start);
  start.wShowWindow := SW_SHOWDEFAULT;
  sec.nLength := sizeof(sec);
  sec.lpSecurityDescriptor := nil;
  sec.bInheritHandle := true;

  if CreateProcess('c:\borland\delphi7\bin\dcc32.exe', nil, @sec, @sec, true, 0, nil, nil,  start, pinfo) <> true then
  begin
    ShowMessage(AnsiString('CreateProcess() failed: ') + IntToStr(GetLastError));
    exit;
  end;
  repeat
    Application.ProcessMessages;
    if NowClose then exit;
    waitresult := WaitForSingleObject(pinfo.hProcess, 100);
  until waitresult <> WAIT_TIMEOUT;

  if waitresult = WAIT_FAILED then
  begin
    ShowMessage('WaitForSingleObject() failed');
    exit;
  end;
  CloseHandle(pinfo.hProcess);
  ShowMessage('끝!');
end;

end.

방금 델파이 팁 게시판에도 올렸습니다.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=del_tip&no=51


초보빌더 님이 쓰신 글 :
: a.exe 라는 파일이 있고 이 파일은 특정파일을 읽어들여서 일정형식의 변환을 거치는 것입니다.
: 예를 들면 a.exe 1.dat > 1.txt 이런식으로 도스창에서 입력을 하면 1.dat가 변환되어 1.txt가 됩니다.
: 이 txt파일을 델파이에서 가공하여 보여주고 또 인쇄하는 것을 만들려고 하는데요.
: 1.dat파일의 용량이 항상 다르기때문에 이 명령이 종료될때까지는 델파이는 다른 작업을 못하게 해야하거던요.
: 어떻게 해야할까요..
:
: 답변부탁드릴께요
:
:

+ -

관련 글 리스트
9213 [질문] 도스 실행파일 종료 여부를 알아두려면 어떻게 해야하나요? 초보빌더 771 2004/05/11
9511     Re:[질문] 도스 실행파일 종료 여부를 알아두려면 어떻게 해야하나요? 박지훈.임프 1238 2004/05/14
9512         Re:Re:[질문] 감사합니다. 인수는 어떻게 주어야하나요? 초보빌더 811 2004/05/14
9515             Re:Re:Re:[질문] 감사합니다. 인수는 어떻게 주어야하나요? 박지훈.임프 1012 2004/05/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.