안녕하세요?
웹에서 프로그램을 다운받아 설치하려고 링크를 클릭하면 해당 회사에서 제공하는 다운로드 컴포넌트가 실행되어 작업을 하는 경우가 있습니다.
뭐, 이 컴포넌트를 만들겠다는 것이 아니라...
이 컴포넌트가 실행되는 걸 보면 웹브라우저 창과는 별도로 창이 돌아다닐 수 있게 되어 있습니다(floating).
C++Builder의 ActiveForm은 이렇게 안 되쟎아요.
이런 Floating Form을 어떻게 만드는지 알고 싶습니다.
ActiveForm을 이용해서 하되 Main 폼을 숨기고 새로운 폼을 띄우면 그렇게 할 수 있다는 것은 압니다만 그건 변칙이고 제대로 하려면 어떻게 해야 하나요?
참고로 아래와 같이 해보았는데 안 됩니다.
1. ActiveX Library 프로젝트를 시작
2. COM Object를 추가
3. 위 오브잭트에 CoClass를 추가
4. CoClass의 기본 인터페이스(IUnknown 상속)를 추가
5. 위 인터페이스에 TestIt 메서드를 추가(매개변수 없음)하고 Refresh
5-1. TestIt 메서드는 소스 파일에 실제로 잘 만들어져 있음
5-2. TestIt 메서드에서는 기본으로 제공되는 코드 외에는 아무 작업도 안 함
6. DLL 만들기(컴파일 및 링크)
7. 결과 dll을 서버의 일정한 장소에 복사
7-1. 수동으로 HTML 파일(아래참조)을 만들고 그 안에 Object 태그를 삽입하여 해당 DLL을 다운로드하고 초기화되게 함
(실제로 파일이 잘 다운되어 C:\WINDOWS\Downloaded Program Files 에 모셔져 있음).
(해당 dll의 DllGetClassObject도 rclsid를 3의 GUID로 하고 riid를 IClassFactory로 하여 호출됨)
(_Module.GetClassObject의 호출 결과 *ppv도 NULL이 아님)
8-2. 위의 html 내의 자바스크립트에서 5의 메서드를 호출(이 부분에서 스크립트 오류가 발생)
위의 방법이 왜 안 되는 지 알고 싶습니다.
감사합니다.
<html>
<OBJECT
classid="clsid:3의 GUID"
codebase="
http://localhost/someApp/해당DLL#version=1,0,0,0"
id="testAX"
>
</OBJECT>
<script language=javascript>
<!--
function Test()
{
testAX.TestIt();
}
//-->
</script>
<input type=button value="Test" onClick="Test();">
</html>