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

C++빌더 Q&A
C++Builder Programming Q&A
[17756] Re:Re:Re:초보라 그러는데 열고자하는 파일명이나 루트는 어디에 명시를 해야하는거예요.. 자세히좀...ㅠㅠ
유영인 [Chris] [cuperido] 1562 읽음    2002-04-18 18:21
다음 단계를 거쳐 주시면 됩니다.

1. 아래의 함수를 소스 파일에 추가합니다. 단, 첫줄의 "TMain::" 이 부분은 아래 소스를 추가한 폼 이름으로 바꾸어 주십시오. 예를들어, 폼 이름이 Form1 이라면, TForm1 로 변경해 주십시오

void __fastcall TMain::CreateCommand(String stCommand)
{

HWND                            hdWindow;
STARTUPINFO                  siParam;
PROCESS_INFORMATION      piParam;
DWORD                           dwExitCode;


// 초기화
FillMemory(&siParam, sizeof(STARTUPINFO), 0);
FillMemory(&piParam, sizeof(PROCESS_INFORMATION), 0);

// Param 섯팅
siParam.cb               = sizeof(STARTUPINFO);
siParam.dwFlags       = STARTF_USESHOWWINDOW;
siParam.wShowWindow = SW_HIDE;

CreateProcess(NULL, stCommand.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &siParam, &piParam);
WaitForInputIdle(GetCurrentProcess(), INFINITE);

// 프로세스가 종료될때까지 대기함
if(piParam.hProcess) {
   dwExitCode = STILL_ACTIVE;

   while(dwExitCode == STILL_ACTIVE) {
      WaitForSingleObject(piParam.hProcess, 1000);
      GetExitCodeProcess(piParam.hProcess, &dwExitCode);
      UpdateWindow(Handle);
   }
}

}


2. 헤더파일의

public:        // User declarations

이 부분 아래에 위의 함수를 정의해 주십시오.

void __fastcall TMain::CreateCommand(String stCommand);   <- 세미콜론 유의.


3. CreateCommand("C:\\windows\\notepad.exe");
라고 하시면 메모장을 실행하고, 실행이 끝날때까지 대기시킵니다.
경로를 직접 써줄때, \ 를 사용할 시, \\ 라고 두개를 써 주셔야 합니다. \n\r\" 등과 같은 원리죠.



이순구 님이 쓰신 글 :
: 초보라 그러는데 열고자하는 파일명이나 루트는 어디에 명시를 해야하는거예요..
: 자세히좀...ㅠㅠ
: 그리고 제가 하고자하는건 프로그램실행이 끝날때 까지 실행을 대기해야하거든요...
: ShellExecute() 나 ShellExecuteEx()는 대기하지 않더라구요...
: 그리고 CreateProcess() 쓰려면 무엇을 include 해야하나요?
: 답변 부탁드립니다.. 고수님.....
:
:
: 유영인 [Chris] 님이 쓰신 글 :
: : 대표적으로 WinExec 와 CreateProcess 를 사용합니다. 차이점은 WinExec는 실행을 하고 빌더의 프로그램을 계속 병행해서 진행한다는 것이고, CreateProcess는 그 프로그램의 실행이 끝날때 까지 실행을 대기한다는 차이가 있습니다.
: :
: : 1. WinExec
: : WinExec("프로그램 경로 와 이름", SW_SHOW);
: :
: : 뒤의 SW_SHOW 로 하시면 보이는 상태, SW_HIDE 는 안보이는 상태로 실행됩니다. 기타 여러 옵션을 보시려면, 빌더 도움말에서 ShowWindow 항목을 찾아보시면 됩니다.
: :
: :
: : 2. CreateProcess 사용법
: : http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=17500
: : 을 클릭하셔서, 해당 함수를 복사하셔서 사용하시면 됩니다.
: :
: :
: : 이순구 님이 쓰신 글 :
: : : : : : : : : : : : : : : : : : : : :
빌더에서 다른 exe 실행파일을 실행시키는 명령어는 없나요?
: : :
있으면 어떻게 쓰는건지요...ㅠㅠ
: : :
고수님들의 지도 부탁 드립니다.... 지가요 급하거들랑요...
: : : : : :
: : :

+ -

관련 글 리스트
17751 [급]빌더에서 다른 exe 실행파일을 실행시키는 명령어는 없나요? 이순구 840 2002/04/18
17753     Re:[급]빌더에서 다른 exe 실행파일을 실행시키는 명령어는 없나요? 유영인 [Chris] 1121 2002/04/18
17755         Re:Re:초보라 그러는데 열고자하는 파일명이나 루트는 어디에 명시를 해야하는거예요.. 자세히좀...ㅠㅠ 이순구 1186 2002/04/18
17756             Re:Re:Re:초보라 그러는데 열고자하는 파일명이나 루트는 어디에 명시를 해야하는거예요.. 자세히좀...ㅠㅠ 유영인 [Chris] 1562 2002/04/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.