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
[751] [답변] BESTCD/ 외부프로그램 실행하는 방법?/프포
박지훈.임프 [cbuilder] 5467 읽음    1998-11-28 07:07
안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당자 임펠리테리입니다.

윈32 환경에서 외부프로그램을 실행하는 방법은 크게 WinExec()를 이용한 방법과

ShellExecute()를 이용한 방법으로 나누어집니다. (그외 도스에서 사용하던 System(),

exec~(), spawn~() 도 사용가능하지만, 긴화일이름이나 다른 기타문제때문에 윈32하

에서 사용하는 것에는 여러가지 한계가 있으므로 언급하지 않겠습니다. 또한 이 두

함수의 32비트 버전인 CreateProcess()와 ShellExecuteEX()가 있지만, 대동소이하다

고 보면 됩니다.)

WinExec() 함수는 인자로 넘겨진 프로그램을 그냥! 실행합니다. 첫번째 인자로

실행할 프로그램 이름과 인자들을 통째로 넘겨주면 됩니다. (이런 면에서 도스에서

두번째 인자는 실행된 프로그램이 화면에서 나타날 방법을 지정하는 것으로,

이들 인자는 ShowWindow() api함수의 인자와 동일하므로 참고하면 되겠습니다.

ShellExecute()함수는 좀 복잡한데.. 넘겨준 화일이 실행화일이라면 마찬가지로

그대로 실행하지만, 만약 실행화일이 아닌 경우라면 연결된 실행화일을 실행해줍니다

. 다시말해, 레지스트리에서 지정된 특정 실행화일을 실행해주는 것입니다. 이 함수

의 인자라든지 사용법은 다소 복잡하므로, 아래 다른 질문/답변을 참고하시든지,

혹은 다음기회에 구체적으로 알려드리겠습니다.

만약 컴퓨터마다의 연결프로그램이 다른경우, 그러니까 대표적인 예로 html화일에

연결된 프로그램이 넷스케입과 익스플로러로 다른 경우 반드시 특정 프로그램으로

실행하려면 ShellExecute()를 사용하면 안되겠죠? 이 함수는 자동으로 연결된 프로그

램을 찾아서 실행하니까요. 하지만, 반면에 WinExec()를 사용하려고 한다면, 그 프로

그램이 설치되어있는 경로를 정확히 알아야 하므로, 여러컴에서 호환성을 생각한다면

반드시 레지스트리를 뒤져서 해당프로그램이 설치된 경로를 알아내야 하는 불편함이

있겠죠.

그럼, 도움되시길 바라면서, 이만..



독립문에서 임펠리테리였습니다.

(cbuilder, cbuilder@thrunet.com)



+ -

관련 글 리스트
750 [질문] 외부프로그램 실행하는 방법?/프포 bestcd 5209 1998/11/28
751     [답변] BESTCD/ 외부프로그램 실행하는 방법?/프포 박지훈.임프 5467 1998/11/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.