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
[37797] C에서 애플릿 호출하기..
fafali [] 1003 읽음    2004-10-29 11:27
질문내용이 이게시판에 적절한지 잘 몰것군엽..아니라면 죄송합니다....

먼저 질문부터 드리면...
[질문.1] 자바애플릿에서 윈도우 메시지를
         win32애플케이션으로 전송하는 것이 가능한가여?
         예를 들어서 특정 브라우져에 WM_CLOSE 메시지를 전송하는 것처럼...
        ( awt,Event 등은 제가 무지하니 이해해 주세요..ㅎㅎ)
[질문.2]브라우져에서 로딩한 jvm의 핸들을
        win32애플케이션에서 가져오는 방법이 있나요?
[질문.3]win32 DLL 에서 applet의 메소드를
        호출하는 것이 가능한지 궁금합니다.
        (물론 JNI callback 함수는 제외하고 말이죱...)

(참고로 현재는 소켓을 이용해서 통신을 하고 있습니다만..
쪼까 불편한 점들이 있어서 아래 방법들을 고민하고 있습니다.)


아래는 지금까지 삽질한 내용입니다.
---------------------------------------------------------------------
환경은 WinXP+IE6.0+SP1+JRE1.4.2_03+인증(서명된)애플릿 입니다.
(적어놓고  보니 아주 평범한 환경이군여...ㅎㅎ)

먼저,성공한 단위테스트는
1.인증애플릿 서명 및 다운로드             --> OK

2.서명된 애플릿에서 DLL 로딩              --> OK
  ( 물론 이 부분에서 loadLibrary 보안설정했슴다...)

3.서명된 애플릿에서 DLL 호출 및 콜백호출  --> OK
  (1~3 번까지는 sun 홈페이지서 제공하는 샘플로 테스트 했습니다...)

4.win32 애플케이션에서 동일한 DLL 을 로딩 --> OK
( 동일 DLL인 것은 공유된 전역변수를 사용하여 확인했슴다..)

5.win32 애플리케이션에서 DLL에 익스포트된 함수를 사용하여
  3번에서 사용한 콜백함수 호출....        --> FAIL
( 3번에서 미리 JNIEnv *env , jobject obj 객체를
   DLL 의 공유전역변수에 할당했슴다..
   그리고  NewGlobalRef 를 사용하여 글로벌 레퍼런스로 만들었구요...
   이부분이 무지가 더러나는 부분이네요..ㅋㅋ
   이방법으로 테스트 하면 access violation이 발생하는 것 같습니다.
   결국 적절한 방법이 아닌것 같다는 생각입니다..)

*4-5번이 잘못된 접근이라는 판단하에 3번후에 6번을 실행했습니다.

6.win32 애플케이션에서 JNI_GetCreatedJVM(?) 함수를 이용하여
  1번서 생성한 jvm.dll 로딩  --> FAIL
  ( 4~5 번의 접근이 잘못되었다는 판단하에..
    1~3번이후 바로 6번으로 선회했슴다.
    1번에서 생성한 jvm.dll을 로딩한 후
    win32 애플케이션의 메인쓰레드를 attach하여서
    JNIEnv *env 객체를 가져오기 위함입니다만
    JVM_GetCreatedJVM 함수에서 리턴된 jvm 의 개수가 0 이더군요..
    즉 생성된 jvm이 없다는 뜻이겠죠...쩝..)

요기까지가 제가 접근한 방법입니다.
인터넷 문서를 뒤지다 보니
해당 프로레스가 생성한 jvm의 핸들만 가져올수 있다는 내용들이 있더군여..
그렇다면 6번 또한 잘못된 방법이라는 생각이 듭니다.

이리저리 다 포기하고..
아래처럼 다른 방법으로
win32 애플케이션과 자바애플릿의 통신 방법를 고민하고 있습니다.
(단,RMI,RMI-iiop 같이 TCP를 이용한 방법은 일단 배제했슴니다.)
1. 윈도우 메시지 사용한다.
2. win32애플케이션에서 jvm의 핸들을 가져오는 다른 방법을 찾기위해
   또 삽질한다...쩝..

조금의 힌트나 조언 ,참고할만한 사이트도 큰 도움이 될것 같습니다..

+ -

관련 글 리스트
37797 C에서 애플릿 호출하기.. fafali 1003 2004/10/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.