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
[25625] Re:[질문] activexform 에서 서브폼을 만들고 싶습니다.
최준호.스페로 [sparrow] 677 읽음    2003-05-16 16:30
안녕하세요 스페로 입니다.

혹시 구지 브라우저에서 동작하지 않아도 되고

단지 엑티브 X가 뜬상태에서 클라이언트 컴터에서 새로운 창으로 나와도 된다면?

에플리케이션을 실행 시키는 방법

즉 클라이언트에게 CAB파일이 다운로드 되어지면서 EXE같은 에플리케이션도 포함시켜서

배포하고

그 배포된 EXE는 알려진 경로에 들어가게 됩니다. 그걸 ActiveX에서 실행 시켜 주는 방법이

어떨런지...

아래의 팁은 제홈에 팁으로 ActiveX폼에서 다른 에플리케이션과 함께 배포 하기 입니다.

참고 하세요



---- 제홈에서 퍼온글 ----

안녕하세요 스페로입니다..

오늘의 팁은 엑티브x 폼과 관련된 것입니다...

일단 엑티브X폼 프로젝트를 프로그래밍 할 수있다는 가정하에 다음의 문제를 생각해 보지요..

엑티브 X 가 클라이언트의 브라우저에서 동작중입니다.

어떠한 작업을 하고 싶은데 엑티브X 폼에선 불가능한 작업입니다.

이럴때 별도의 EXE파일을 구동 시키고 싶습니다.

이파일은 물로 클라이언트의 없는 것입니다.

이런한 문제점을 해결할려면..

일단 웹디플로이 옵션에서 cab를 해제 합니다.

그럼 생성되는 파일은 .cab가 아니라 .ocx와 .inf입니다.

이러한 상태에서 추가 작업을 하는 EXE파일을

.ocx와 .inf .EXE이렇게 원하는 파일을 같이 묶어서 다시 cabarc유틸을 이용하여 수동으로 cab파일을

만드러 배포하면

엑티브X가 다운로드 받아 질때 EXE파일도 같이 낑겨서

WINNT\DownLoaded Pogram files\ 로 들어가게 되지요

그런데 이때 inf파일을 수정해야 들어 갑니다.

그리고 들어간 파일도 탐색기에서 보면 보이지 않지요.. cmd에서 dir명령으로 확인 하셔야 할겁니다.

다음은 제가 프로젝트에 이용한 INF파일에 예입니다. info.exe를 같이 포함 시킨다는 코드와
file-win32-x86=thiscab --> cab파일에 모든 정보가 있다는 것을 표시하는 것을..
그리고
[info.exe]
file-win32-x86=thiscab
이렇게 info.exe에 대한것도 하나 대강 섹션을 만드러 줍니다.

//---------------시작---------------
;C++Builder-generated INF file for chatProj1.ocx
[Add.Code]
chatProj1.ocx=chatProj1.ocx
info.exe=info.exe

[chatProj1.ocx]
file-win32-x86=thiscab
clsid={8F2D0D5C-5D91-47D6-90E9-AA63A6048F53}
RegisterServer=yes
FileVersion=1,0,21,13

[info.exe]
file-win32-x86=thiscab
//----------------끝---------------

그리고 생성되는 html에서도 코드베이스 부분을 inf대신 cab으로 바꾸어 주고요

cab파일을 생성하시면 됩니다.

생성 방법은

cmd에서
cabarc -s 6144 n 파일.cab 파일1.ocx 파일1.inf 파일2.EXE
이렇게 해서 cab파일을 만듭니다...

여기까지 하면 클라이언트에 일단 EXE를 심는 방법입니다.

그럼 엑티브X 폼에서 간단하게 Winexec함수 같은 걸로 프로그램을 구동 시킬수 있겟죠..

당연히 WINNT\DownLodaded Program Files\에 있는지 어느 드라이브인지 Windows\ 인지...

이런걸 해결하려면 일단 시스템 디렉토리를 알아오는 방법을 해야 겟지요..

//------------------시작--------------------
  String path;
  char lpDirBuf[256];

  GetWindowsDirectory(lpDirBuf,sizeof(lpDirBuf));
  path = (String)(lpDirBuf);
  path = path +"\\Downloaded Program Files\\info.exe "; 
  WinExec(path.c_str(),1);
//------------------끝-----------------------
위 코드를 보시면 윈도우의 디렉토리를 알아내고 Downloaded Program Files 디렉토리이름을 붙여서
엑티브 X 캐시 경로를 구합니다.
그리고 WinExec함수로 info.exe를 구동시키는 코드입니다..

그럼 즐거운 하루 되세요 ^^

+ -

관련 글 리스트
25624 [질문] activexform 에서 서브폼을 만들고 싶습니다. 이진수 571 2003/05/16
25625     Re:[질문] activexform 에서 서브폼을 만들고 싶습니다. 최준호.스페로 677 2003/05/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.