ActiveX Form기초부터 배포
개발환경 : Windows XP pro, Delphi 6.0, IIS 5.2
- 새프로젝트를 시작하자.
델파이를 시작하고 메뉴->File->New->Other을 선택한다.
New Items창에서 ActiveX텝으로 이동한다.
Active Form을 선택하고 OK버튼을 클릭한다.
- Active Form Wizard폼이 나타난다.
New ActiveX Name : ActXRun을 입력하면 아래는 알아서 변경된다.
OK버튼을 클릭한다.
경고메시지가 나오면 OK버튼을 클릭한다.
- 이제부터가 시작이다.
일단 저장을 한다.
적당한 폴더를 선택(예제작성시는 c:\ActXRun폴더에 저장했다)하여 저장한다.
- 컴포넌트 추가
TButton(예제작성시 이름은 기본값을 사용한다)을 추가하고 Caption을 '실행'으로 수정한다.
버튼크기와 폼크기를 적장하게 수정한다.
- unit 추가
URLDownloadToFile함수를 사용하기 위해서 URLMon Unit을 추가한다.
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActiveX, AxCtrls, ActXRunProj1_TLB, StdVcl, StdCtrls, URLMon; //요넘 추가
- 프로퍼트 추가
메뉴->View-> Type Library을 선택한다.
ActXRunProj1.tlb(프로젝트이름에 따라 다를 수 있음)라는 라이브러리 창이 나타난다.
왼쪽트리에서 IActXRun을 선택하고 마우스 오른쪽버튼을 클릭하여 팝업창을 띠운다.
팝업창에서 New->Property클릭하면 Property가 추가되는데 이름을 Url로 한다.
오른으로 Attributes텝에서 Type를 BSTR로 수정한다.
위와 같은 방식으로 FileName를 추가하고 Type를 BSTR로 수정한다.
- 변수선언
ActXRunImpl1.pas로 와서 FUrl, FFileName를 추가한다.
type
TActXRun = class(TActiveForm, IActXRun)
Button1: TButton;
private
FUrl: string; //이넘 추가
FFileName: string; //이넘 추가
- Property코딩
Pas화일 하단에 보면 Get_FileName, Set_FileName, Get_Url, Set_Url 함수가 있다.
아래와 같이 코딩한다.
function TActXRun.Get_FileName: WideString;
begin
result:= FFileName; //이넘 추가
end;
function TActXRun.Get_Url: WideString;
begin
result:= FUrl; //이넘 추가
end;
procedure TActXRun.Set_FileName(const Value: WideString);
begin
FFileName:= Value; //이넘 추가
end;
procedure TActXRun.Set_Url(const Value: WideString);
begin
FUrl:= Value; //이넘 추가
end;
- 이벤트 추가
Button1에 OnClick Event을 추가한다.
코딩내용은 web에서 화일를 다운로드해서 바로 실행하는 내용이다.
FileName와 URL이 없는 상태에서는 기본값으로 화일을 다운로드해서 실행한다.
아래와 같이 코딩한다.
procedure TActiveFormX.Button1Click(Sender: TObject);
var sServerFileName, sLocaFileName: string;
begin
if FUrl = '' then FUrl := 'http://LocalHost/ActXRun';
if FFileName = '' then FFileName:= 'NOTEPAD.EXE';
sServerFileName:= FUrl;
if sServerFileName[Length(sServerFileName)] <> '/' then
sServerFileName:= sServerFileName + '/';
sServerFileName:= sServerFileName + FFileName;
sLocaFileName:= 'c:\temp\' + FFileName;
if not DirectoryExists('c:\temp') then
if not CreateDir('C:\temp') then
raise Exception.Create('Cannot create c:\temp');
URLDownloadToFile(nil, PChar(sServerFileName), PChar(sLocaFileName), 0, nil);
WinExec(PChar(sLocaFileName),SW_SHOW);
end;
- 코딩 마무리
컴파일을 하면 ActXRunProj1.ocx가 생성된다.
여기까지 프로그램 작성은 끝났다.
- Web Deployment Options 설정
Web에 올리기 위해서는 ocx보다는 압축된 형태의 화일인 cab화일을 사용하는것이 보통이다.
cab 화일을 만들기 위한 작업에 들어가자.
메뉴->Project->Web Deployment Options...메뉴를 선택한다.
Web Deployment Options창이 나타나고 Project탭에서 Directories and URLs 에디터에
C:\ActXRun로 3개의 다 입력한다.
General Options에 Use CAB file compression, Deploy additonal files를 Check한다.
Packages, Additional Files탭은 여기서는 설정하지 않는다.
OK버튼을 클릭한다.
- Web Deploy
메뉴->Project->Web Deploy을 선택하면 ActXRunProj1.cab, ActXRunProj1.htm, ActXRunProj1.inf화일이 생성된다.
- 델파이 작업끝
Test를 위해서 NOTEPAD.EXE화일을 C:\ActXRun폴더에 복사한다.
ActXRunProj1.htm화일을 IE에서 열어보면 실행이란 버튼이 있는 ActiveX Form이 보일 것이다.
만약에 않보이면 위에서 부터 다시 잘 살펴보자.
여기까지가 델파이 작업의 끝이다.
이제부터는 IIS를 설정하고 cab화일을 codesign해서 사용하는 것을 하겠다.
- IIS설정
'관리 도구'에서 '인터넷 정보서비스'를 선택한다.
'인터넷 정보서비스'가 없다면 IIS를 설치해야 한다.
'기본 웹 사이트'에서 '가상 디렉터리'를 추가한다.
별칭은 'ActXRun'로 하고 디렉터리는 'C:\ActXRun'로 설정한다.
IE에서 'http://127.0.0.1/ActXRun/ActXRunProj1.htm'입력하여 확인한다.
ActiveX Form이 않보인다고 이상하게 생각하지 접근가능한지만 확인한다.
화면이 보이면 IIS에서 할 일도 다 했다.
- Htm화일 수정
anycert.co.kr싸이트에서 codesign.exe을 다운받는 내용으로 수정해 보자.
ActXRunProj1.htm화일을 오픈해서 아래와 같이 수정한다.
Delphi 6 ActiveX Test Page
You should see your Delphi 6 forms or controls embedded in the form below.
classid="clsid:F7A9CFCB-9063-478C-8731-D3A3C7117244"
codebase="http://127.0.0.1/ActXRun/ActXRunProj1.cab"
width=58
height=26
align=center
hspace=0
vspace=0
- ActiveX Form이 설치되는 폴더
'C:\WINDOWS\Downloaded Program Files'폴더에 가면 ActXRun Control이런 화일이 있다.
ActiveX프로그램을 개발하다 보면 자주오는 곳이므로 알아두는 것이 편리한다.
ActXRun Control를 삭제한다.(삭제가 않되면 ActXRun Control를 사용하고 IE를 닫고하면 된다.)
ActXRunProj1.htm화일을 IE로 오픈하면 이제는 ActiveX Form이 않보인다.
- codesign설치
델마당 자료실이나 http://www.anycert.co.kr/program/codesign.exe를 받아서
적당한 폴더에 압축을 푼다.
여러개의 화일이 있는데 사용법은 간단하다.
- cab화일 test인증하기
cab화일을 그냥 web에 올리면 보안경고와 함께 볼 수가 없다.
일반적으로 game싸이트나 다른 싸이트를 방문하게 되면 보안경고메시지와 함께 설치여부를
확인하게 되는데 인증작업을 한 ActiveX화일만이 이런 메시지를 볼 수 있다.
ActXRunProj1.cab화일을 codesign이 설치된 폴더에 복사한다.
cmd도스 창을 열고 codesign폴더로 이동한다.
아래와 같이 입력한다.
makecert -n "CN=test" -sv test.pvk test.cer
개인공개키를 생성하는 화면이 나타나면 적당한 패스워드를 입력한다.
test.pvk와 test.cer 파일이 생성되고 생성된 ser 파일을 이용해서
spc 파일을 생성한다. 아래와 같이 입력한다.
cert2spc test.cer test.spc
Succeeded라는 메시지가 나타나면 spc 파일이 성공적으로 생성된것이다.
cab 파일 서명을 위해 아래와 같이 입력한다.
signcode -spc test.spc -v test.pvk -n "ActXRun" ActXRunProj1.cab
이전에 설정한 비밀번호를 입력한다.
Test Sign 과정이 마무리되면 아래와 같이 인증확인을 해볼 수 있다.
chktrust ActXRunProj1.cab
결론적으로 정리하면 위에 내용은 아래와 같이 입력한 것이다.
makecert -n "CN=test" -sv test.pvk test.cer
cert2spc test.cer test.spc
signcode -spc test.spc -v test.pvk -n "ActXRun" ActXRunProj1.cab
chktrust ActXRunProj1.cab
- 마무리
인증된 ActXRunProj1.cab화일을 C:\ActXRun폴더로 복사하고
IE에서 ActXRunProj1.htm를 오픈하면 "ActXRun"설치여부를 확인하는 보안경고가
나타난다.
"예"버튼을 클릭하면 이 모든 작업이 끝난다.
여기까지나 기본적인 ActiveX From을 작성하여 배포하는 순서이다.
막상해보면 별로 복잡하지도 않은 것이 처음 해보는 사람에게는 체계적으로
설명된 내용을 찾기 힘들어서 고생하는 경우가 많다.
이 글이 ActiveX Form를 처음 사용하는 사람들에서 조금이나만 도움이 될 수 있었으면 한다.
'Delphi Tip > 인터넷' 카테고리의 다른 글
IE 현재 열려있는 주소값 읽어오기 (0) | 2021.11.25 |
---|---|
Indy9 파일전송 예제 (0) | 2021.11.24 |
idhttp를 이용한 사이트 이미지 업로드 (0) | 2021.11.22 |
indy idhttp 이용해서 파일 업로드 (0) | 2021.11.19 |
웹페이지 FillInForm (0) | 2021.11.18 |
댓글