창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


LIST ALL
Posted by 지상현2007-08-11 16:20:55, Hit : 10791
창조와 ActiveX (2)
Homepage : http://ssidang.x-y.net
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=open_lec&no=113
저번에 이어, 오늘은 드디어 ActiveX 개체를 한번 만들어봅시다.
CreateCOM 라이브러리를 기준으로 설명해보겠습니다.


(5) ActiveX 만들기
일단 ActiveX 개체를 만들어봅시다.
oNew 함수를 이용해서 할 수 있습니다.

먼저 만들고 싶은 ActiveX 개체의 ProgID 란 것을 알아야 합니다.
ProgID는 ActiveX 개체의 이름 같은 것인데, 흔히 "회사.이름.버전" 같은 식으로 짓습니다.

예를 들면,
인터넷 익스플로러 => "InternetExplorer.Application"
XML 파서 => "Microsoft.XMLDOM"
알파 변형 필터 => "DXImageTransform.Microsoft.Alpha"

이밖에도 수많은 ActiveX 개체가 있습니다.

ActiveX 개체를 만들려면 다음과 같이 합니다.




oNew(0, "InternetExplorer.Application", "");

첫 번째 인자와 세 번째 인자는 항상 0과 ""을 넣고, 두 번째 인자만 원하는 개체의 ProgID를 적어주면 됩니다.
개체를 제대로 만들었다면, 어떤 값이 반환됩니다.
실패하면 0이 반환되고, oResult 함수로 실패 이유를 알 수 있습니다.

(6) ActiveX 개체 다루기
ActiveX 개체는 창조의 객체와 매우 비슷합니다.

똑같이 함수와 속성이 있고, 함수를 호출하고, 속성의 값을 가져오거나 대입할 수 있습니다.
이 때 속성의 경우엔 문법적으로 따로 대입하거나 가져올 수 없으므로, 세 경우 모두 oInvoke 함수를 이용해 호출할 수 있습니다.

ㅎ창과 똑같은 ActiveX 개체가 있다고 치고, 예를 들어보겠습니다.




창.제목 := "ActiveX 예제";
핸들 := 창.핸들;
창.보여;

첫 번째 줄은 속성을 대입하는 것이고, 두 번째 줄은 속성을 가져오는 것, 세 번째 줄은 객체의 함수를 호출하는 것입니다.
위 코드를 CreateCOM 라이브러리로는 어떻게 하는지 봅시다.




oInvoke(2, 창, "제목", " 'ActiveX 예제' ");
핸들 := oInvoke(1, 창, "핸들", "");
oInvoke(0, 창, "보여", "");

상관 관계를 잘 보시기 바랍니다.
먼저 첫 번째 인자는 호출하는 방법인데, 0은 함수 호출, 1은 속성 가져오기, 2는 속성 대입하기입니다.
0, 1인 경우엔 함수의 결과와 속성 값을 반환 값으로 받을 수 있습니다.
만약 반환 값이 문자라면 oInvokeStr 함수를 쓰면 됩니다.
두 번째 인자는 객체 자체고, 세 번째 인자는 객체의 함수나 속성 이름입니다.
객체에 무슨 함수나 속성이 있는지는 그 ActiveX에 관련된 문서나 TypeLib 정보를 참조해야 합니다.
여기서는 모두 알고 있다고 가정합시다.

그러면 간단하게 익플 창을 하나 띄워볼까요?




// 익플 창을 띄우는 코드 (의사 코드임)
익플.Navigate("http://cugz.com");
익플.Visible := 참;
익플 개체에 있는 Navigate 함수는 특정 주소로 이동하는 함수입니다.
Visible 속성은 창조에 있는 보이기 속성과 같습니다.

위 코드가 제대로 작동한다면, cugz.com을 띄우는 익플 창이 하나 뜰 것입니다.
위 코드를 CreateCOM을 이용한 코드로 바꿔봅시다.




oInvoke(0, 익플, "Navigate", " 'http://cugz.com' ");
oInvoke(2, 익플, "Visible", "참");

만약, 오류가 발생했다면 oResult 함수로 오류 코드를 얻을 수 있습니다. (0이 나오면 성공한 것입니다.)
또 '익플'이란 개체에 'Navigate'란 함수가 없었다면 실행되지 않고 오류 코드가 설정됩니다.


참, '익플'이란 개체를 쓰기 전에 당연하지만 그 개체를 미리 만들어둬야 합니다.
위에서 '익플'이란 개체를 얻기 위해서는,




실수: 익플;

익플 := oNew(0, "InternetExplorer.Application", "");

같은 식으로 하시면 됩니다.

(7) oInvoke에서 인자 넘기기
CreateCOM에서는 함수마다 다른 개수의 인자를 넘길 수 있도록, 인자 내용을 문자열로 통째로 넘기는 방법을 지원합니다.

규칙은 간단합니다.
각 인자를 , 으로 구분하고, 문자열은 ' 으로 묶습니다. 문자열 안에서 ' 자체를 쓰고 싶다면 '' 라고 쓰면 됩니다.
진리 값은 참, 거짓을 넣으면 됩니다.

123, "가나다라", 거짓
을 바꿔보면

"123, '가나다라', 거짓"
이 됩니다.

이 때, 두 번째 인자에 변수를 쓰게 된다면 어떻게 할까요?
예) 123, 에디트0.문자, 거짓

변수 이름을 그대로 쓰면 안 되고, 다음과 같이 실제 값만 넘어야 합니다.
"123, '" + 에디트0.문자 + "', 거짓"

(8) 만든 개체 지우기
개체를 만들고 필요가 없다면 반드시 지워주는게 좋습니다.
간단하게 oDelete 함수를 이용해서 만들었던(혹은 다른 개체로부터 얻어온) 개체를 집어넣으면 개체를 제거할 수 있습니다.





지금까지 ActiveX 개체를 다루는 아주 기본적인 것들을 살펴봤습니다.
특정한 ActiveX 객체를 다루고 싶다면 먼저 그 ActiveX 개체에 어떤 속성들과 함수가 있는지 문서를 찾아봐야 합니다.
그런 것을 알면 CreateCOM으로 써먹을 수 있을 겁니다.

LIST ALL               GO TO THE TOP


N
   Subject
Posted by
Date
H
119
   [강좌#7] 창조 오류 해부 2탄 (일부작성중) [1]
ps.이진백 2004/05/19  20969
118
     [강좌#7.5] 창조 오류 해부 2.5탄 (나머지)
지상현 2010/06/02  11539
117
   #1 비트 연산이란? - 진수 표기법
지상현 2005/10/09  11393
116
   [강좌#9-2] 이노셋업의 오른팔 istool 초보자 수련 - 언어 [1]
ps.이진백 2004/07/04  11142

   창조와 ActiveX (2)
지상현 2007/08/11  10791
114
   창조입문. :창조란 무엇인가?&CDP만들기: [9]
변혁수 2002/09/06  9941
113
   몇가지 유용한 정보 모음 [5]
최재일 2006/01/13  9363
112
   [강좌#9-1] 이노셋업의 오른팔 istool 초보자 수련 [4]
ps.이진백 2004/07/04  9294
111
   [강좌#1] 프로그램 추가/제거를 제어판에서! [3]
ps.구루 2003/01/28  8451
110
           [3강] 타원을 그려보자! (원 포함)
박종훈 2009/10/24  8368
109
   창조와 ActiveX (1)
지상현 2007/08/07  8278
108
   창조 첫 시작시 명령어 익혀보자~ [4]
박종훈 2006/12/23  8044
107
   대박로또에 적용된 자동업데이트 알고리즘.. [7]
최재일 2004/09/13  7940
106
   환경파일로 파워유저되어보자![개정판] [예제/사용!] 2 [6]
박종훈 2007/01/02  7766
105
       [1강] 직선을 그려보자!
박종훈 2009/10/24  7723
104
   [강좌#8] 자동업데이트 구현 [2]
ps.이진백 2004/06/22  7708
103
   창조입문 : 메모장 만들기 [2]
신용주 2008/12/20  7552
102
   컴퓨터에서 소수점을 표기하는 방식에 대해 [1]
지상현 2012/01/03  7516
101
   API를 알아보자 #2 [1]
지상현 2003/04/10  7493
100
   유용한 기능을 사용자함수로 이용하기 종합.. [9]
최재일 2004/06/18  7442
99
   맞짱! 포인터(Pointer) - 2부 [C언어 포인터 존재를 확인하자!]
박종훈 2009/02/26  7287
98
   창조로 빠져보는 API #3 [13]
지상현 2005/09/04  7267
97
   윈도우즈의 시스템폴더 경로 추출법 [3]
Pueding 2002/09/08  7248
96
   [쉬운강좌]#4.창조에서 압축프로그램만들자.(1) [8]
창조신화 2002/09/16  7136
95
   골칫거리 ㅎ사용자함수 DLL하나로 해결하기! [7]
박종훈 2007/06/23  7107
LIST ALL   1 [2][3][4][5] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인