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
[7432] Re:다른 방법이요. ^^a ... 제가 만들어 두었던 함수인데 잘 먹힐레나 모르겠습니다...^^a~~
nine [] 1714 읽음    2001-09-16 14:53
많은 분들이 도와주시니 고맙습니다.^^
그런데 제가 작성하려는 프로그램은 다른 프로그램을 실행시킨 후, 그 프로그램을
강제로 종료시키는 등 컨트롤도 해야되서요..
ShellExecute 등의 함수는 사용하지 못할 것 같습니다.
CreateProcess를 사용해야 그 프로세스에 대한 정보와 권한을 받을 수 있다고 봤거든요.
다른 함수를 이용해서 이렇게 컨트롤 할 수 있는 방법이 있으면 좋겠네요.

박정모 님이 쓰신 글 :
: 아래 임프님께서 해논게 있는데... 여튼, 전 이런 저런 방법 다 동원해도 안될때가
: 있더군요. ( 아마도 퍼스널 웹서버가 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~~ 박정모 1467 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 1573 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.