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
[7428] 다른 방법이요. ^^a ... 제가 만들어 두었던 함수인데 잘 먹힐레나 모르겠습니다...^^a~~
박정모 [] 1466 읽음    2001-09-16 11:06
아래 임프님께서 해논게 있는데... 여튼, 전 이런 저런 방법 다 동원해도 안될때가
있더군요. ( 아마도 퍼스널 웹서버가 DLL파일을 바꿔서 일어난듯... ) 그래서
ShellExecete를 사용해서 만들어 봤는데 비교적 잘 동작하구요. 단, FileExists로
파일의 존재 여부를 조사하고 난 후에도 조금의 Dealy( 약 0.5 )를 주셔야 합니다.
파일의 내용이 다 써지지 않는 경우가 생기더군요. ^^;;

허접한 쏘쓰 올려놔서 지송여... 잘 고쳐쓰면 쓸만한듯... ^^;;

function DosExecute( psCommand, psOutput, psInput : String; pbAutoClose : Boolean ) : Boolean;
var
  lbRetry,
  lbDoDefaultRead : Boolean;
  lwHInst  : DWORD;
begin
  Result := FALSE;

// Command line을 완성한다
  if pbAutoClose = TRUE then
     psCommand := '/c ' + psCommand;
  if psInput <> '' then
     psCommand := psCommand + ' < ' + psInput;
  if psOutput <> '' then
     psCommand := psCommand + ' > ' + psOutput;

// DOS 프로그램 실행
  lwHInst := ShellExecute( 0, 'open', 'Command.com', PChar( psCommand ), nil, SW_HIDE );
  if lwHInst < 32 then
     EXIT;

// 데이타 파일이 있는지 확인하고 File에서 데이타를 읽는다
  if psOutput <> '' then
  begin
     DoDelay;    // 지연함수... 만들어 넣으세염.. ^^a...

     Result := FileExists( psOutput );
     if Result = FALSE then
     begin
        lbRetry := FALSE;
        if Assigned( FOnOutfileNotFound ) = TRUE then
        begin
           FOnOutfileNotFound( Self, lbRetry );     // File이 없을때 어케할까 물어보는 함수... 이것도 만들어 넣으세염.. ^^a...
           if lbRetry = TRUE then
              Result := FileExists( psOutput );
        end;

        if Result = FALSE then
        begin
           Application.MessageBox( PChar( 'Output file <' + psOutput + '> file not found' ), '',
                                   MB_ICONEXCLAMATION + MB_OK );
           EXIT;
        end;
     end;

     ReadFromFile( psOutput );    // 파일의 내용을 읽는 함수염... 요것도 직접 ^^a;;~~
     DeleteFile( psOutput );
     Result := TRUE;
  end;
end;

호출방법

DosExecute( 'DosPg.exe', 'result.txt', 'password?', TRUE );



+ -

관련 글 리스트
7421 2000에서 pipe가 왜 안먹힐까요.. nine 1475 2001/09/14
7434     Re:16bit DOS 프로그램의 리다이렉션 박지훈.임프 2602 2001/09/16
7428     다른 방법이요. ^^a ... 제가 만들어 두었던 함수인데 잘 먹힐레나 모르겠습니다...^^a~~ 박정모 1466 2001/09/16
7432         Re:다른 방법이요. ^^a ... 제가 만들어 두었던 함수인데 잘 먹힐레나 모르겠습니다...^^a~~ nine 1714 2001/09/16
7433             ShellExecuteEx 함수를 쓰세요. 박정모 2278 2001/09/16
7427     Re:콘솔 어플리케이션의 표준출력/표준에러 받아오기 박지훈.임프 2124 2001/09/16
7429         Re:Re:콘솔 어플리케이션의 표준출력/표준에러 받아오기 nine 1572 2001/09/16
7430             Re:Re:Re:콘솔 어플리케이션의 표준출력/표준에러 받아오기 박지훈.임프 1403 2001/09/16
7431                 Re:Re:Re:Re:콘솔 어플리케이션의 표준출력/표준에러 받아오기 nine 1559 2001/09/16
7423     아마도 Standard out을 가로채는 내부적인 루틴이 돌아갈때 안될까요 ??? ^^a.... 박정모 1627 2001/09/15
7426         고맙습니다.. 근데..^^;; nine 1262 2001/09/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.