LabVIEW를 ActiveX 클라이언트로 사용하여 다른 ActiveX를 지원하는 어플리케이션과 연관된 객체, 프로퍼티, 메소드, 이벤트에 접근할 수 있습니다. 또한 LabVIEW를 ActiveX Server로 사용하여 다른 어플리케이션이 LabVIEW 객체, 프로퍼티 및 메소드에 접근하는 것을 허용할 수 있습니다. LabVIEW에서 ActiveX를 사용하는 것에 대한 추가적인 정보는 ni.com의 ActiveX and LabVIEW를 참조하십시오.

ActiveX 객체, 프로퍼티 및 메소드

ActiveX 활성화 어플리케이션은 다른 어플리케이션에서 접근할 수 있는 노출된 프로퍼티와 메소드를 갖는 객체를 포함합니다. 객체는 버튼, 윈도우, 그림, 문서, 대화 상자처럼 사용자에게 보일 수도 있고, 어플리케이션 객체처럼 보이지 않을 수도 있습니다. 어플리케이션과 관련된 객체에 접근하고 해당 객체의 프로퍼티를 설정하거나 메소드를 실행하여 어플리케이션에 접근할 수 있습니다.

ActiveX 이벤트

이벤트는 마우스를 클릭하거나 키를 누르는 것과 같이 객체에 행해지는 작업입니다. 객체에 이러한 동작이 행해지면, 객체는 이를 알리기 위해 이벤트와 이벤트 특정의 데이터를 ActiveX 컨테이너로 보냅니다. .ActiveX 객체는 객체에 사용 가능한 이벤트를 정의합니다.

ActiveX 이벤트를 어플리케이션에서 사용하려면, 반드시 이벤트를 등록하고 이벤트가 발생하면 이를 처리해야 합니다. ActiveX 이벤트 등록은 다이나믹 이벤트 등록과 유사합니다. 다이나믹 이벤트에서는, While 루프 내부에 이벤트를 놓고 객체 참조를 이벤트 구조에 연결한 후, LabVIEW가 생성하기를 원하는 이벤트를 선택합니다. 예를 들어, ActiveX 컨테이너에서 Windows 기반의 트리 컨트롤을 호출하고 이 트리 컨트롤에 디스플레이되는 항목에 더블 클릭 이벤트를 생성하도록 지정할 수 있습니다. 그러나 ActiveX 이벤트 VI의 구조는 이벤트 핸들링 VI의 구조와 다릅니다. 이벤트를 지정하고 등록하려면 [이벤트 등록] 함수 대신 [이벤트 콜백 등록] 함수를 사용해야 합니다.

노트 National Instruments는 이벤트를 처리할 필요가 없어지면 이벤트 등록 해제 함수를 사용하여 해당 이벤트의 등록을 해제할 것을 권장합니다. 이벤트의 등록을 해제하지 않는 경우, 해당 이벤트를 다룰 이벤트 구조가 없어도 LabVIEW는 VI가 실행되는 한 계속 이벤트를 생성하고 큐에 넣습니다. 따라서 이벤트를 위한 프런트패널 잠금을 활성화시키는 경우 메모리가 소모되고 VI가 멈출 수 있습니다.

LabVIEW에서 ActiveX 이벤트를 생성 및 등록하는 구성요소에 대한 정보는 다음 테이블을 참조하십시오.

구성요소 설명 용도
ActiveX 객체 이것은 이벤트를 생성하고자 하는 ActiveX 객체입니다. 이벤트를 생성하려는 ActiveX 객체를 선택한 후, 오토메이션 참조 벉호를 사용하여 이벤트를 지정할 수 있습니다.
[이벤트 콜백 등록] 함수 이 함수는 [이벤트 등록] 함수와 유사하게 여러 이벤트를 핸들링할 수 있는 확장 가능한 노드입니다. ActiveX 객체 참조를 [이벤트 콜백 등록] 함수에 연결한 후, 객체에 생성하려는 이벤트를 지정할 수 있습니다. 객체에 생성하려는 이벤트를 지정할 때에는, 해당 이벤트에 대해 ActiveX 객체를 등록해야 합니다.
콜백 VI 이 VI에는 이벤트를 처리하기 위해 작성한 코드가 포함됩니다. [이벤트 콜백 등록] 함수를 사용하여 이벤트를 등록한 후 이 VI를 생성할 수 있습니다. 서로 다른 이벤트는 다른 이벤트 데이터 포맷을 가질 수 있습니다. 따라서, 콜백 VI를 생성한 후 이벤트를 변경하면 블록다이어그램의 와이어가 깨질 수 있습니다. 콜백 VI를 생성하기 전에 이벤트를 선택하십시오.

ActiveX VI, 함수, 컨트롤, 인디케이터

어떤 VI, 함수, 컨트롤 및 인디케이터를 사용하여 기타 ActiveX 활성화 어플리케이션과 관련된 객체, 프로퍼티, 메소드, 이벤트에 접근할 지에 대한 정보는 다음 테이블을 참조하십시오.

VI, 함수, 컨트롤 또는 인디케이터 이름 설명 사용 방법
오토메이션 참조 번호 컨트롤 이 컨트롤은 ActiveX 객체에 대한 참조를 생성합니다. VI의 프런트패널에서 ActiveX 컨테이너에 포함된 워드 문서에 대한 참조를 생성할 수 있습니다. 프런트패널의 이 컨트롤에서 마우스 오른쪽 버튼을 클릭하여 접근하려는 타입 라이브러리에서 객체를 선택합니다.
오토메이션 열기 함수 이 함수는 ActiveX 객체를 엽니다. 이 함수를 사용하여 Microsoft Excel 문서를 열 수 있습니다. 함수에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기에서 ActiveX 클래스 선택을 선택하여 해당 객체의 클래스를 선택합니다. 참조 번호를 연 후에는 참조 번호를 다른 ActiveX 함수에 전달할 수 있습니다.
ActiveX 컨테이너 이 컨테이너는 프런트패널의 ActiveX 객체에 접근하고 디스플레이합니다. ActiveX 컨테이너를 사용하여 웹 브라우저와 같이 Active-X가 활성화된 어플리케이션의 버튼을 디스플레이할 수 있습니다. 컨테이너에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 ActiveX 객체 삽입을 선택합니다. 그후 접근하려는 객체를 선택합니다.
프로퍼티 노드 이 함수는 ActiveX 객체와 연관된 프로퍼티를 얻고(읽고) 설정(작성)합니다. 이 함수를 사용하여 프런트패널의 ActiveX 컨테이터에 포함시킨 객체의 프로퍼티를 설정할 수 있습니다. 프런트패널이나 블록다이어그램의 ActiveX 객체에서 마우스 오른쪽 버튼을 클릭한 후, 생성≫프로퍼티 노드를 선택합니다. 그후 바로 가기 메뉴에서 프로퍼티를 선택하여 객체의 프로퍼티를 설정합니다.
인보크 노드 이 함수는 ActiveX 객체와 연관된 메소드를 실행합니다. 프로퍼티 노드를 사용하여 프로퍼티를 설정한 방법과 같이, 이 함수를 사용하여 프런트패널의 ActiveX 컨테이너에 포함시킨 객체의 메소드를 인보크할 수 있습니다. 프런트패널이나 블록다이어그램의 ActiveX 객체에서 마우스 오른쪽 버튼을 클릭한 후, 생성≫인보크 노드를 선택합니다. 그후 바로 가기 메뉴에서 메소드를 선택하여 해당 객체에 대한 메소드를 인보크합니다.
이벤트 콜백 등록 이 함수는 ActiveX 객체에서 발생하는 이벤트를 처리합니다. 이 함수를 사용하여 데이터를 Microsoft Excel 스프레드시트에 추가하는 것과 같은 이벤트를 생성하고 등록할 수 있습니다.
배리언트 컨트롤과 인디케이터 이 컨트롤과 인디케이를 함께 사용하여 ActiveX 컨트롤과 데이터를 주고 받습니다. 이 컨트롤과 인디케이터를 사용하여 Microsoft Excel이나 Microsoft Word와 같이 ActiveX가 활성화된 어플리케이션과 데이터를 주고 받습니다. 배리언트 & 클래스 팔레트를 탐색하여 이 컨트롤과 인디케이터를 찾은 후 프런트패널이나 블록다이어그램에 놓습니다.

데이터 타입 맵핑하기

LabVIEW는 일부 ActiveX 프로퍼티와 메소드의 데이터 타입을 LabVIEW 데이터 타입으로 변환하여 데이터를 읽고 해석합니다. 다음 테이블은 ActiveX 데이터 타입과 해당 변환된 LabVIEW 데이터 타입을 나열합니다.

ActiveX 데이터 타입 LabVIEW 데이터 타입
char ,
short ,
long ,
hyper ,
float ,
double
BSTR ,

LabVIEW를 ActiveX 클라이언트로 사용하기

LabVIEW는 다른 ActiveX 활성화 어플리케이션과 관련된 객체에 접근할 때 ActiveX 클라이언트로 동작합니다. 다음의 방법으로 LabVIEW를 ActiveX 클라이언트로 사용할 수 있습니다:

  • Microsoft Excel과 같은 어플리케이션을 열고, 문서를 생성하고, 문서에 데이터를 추가합니다.
  • 컨테이너의 프런트패널에 Microsoft Word 문서 또는 Excel 스프레드시트와 같은 문서를 포함시킵니다.
  • 다른 어플리케이션의 버튼이나 객체(예를 들어, 다른 어플리케이션의 도움말 파일을 호출하는 도움말 버튼)를 프런트패널에 놓습니다.
  • 생성한 ActiveX 컨트롤을 다른 어플리케이션에 링크합니다.

LabVIEW는 프런트패널 객체인 오토메이션 참조 번호 컨트롤 또는 ActiveX 컨테이너로 ActiveX 객체에 접근합니다. 오토메이션 참조 번호 컨트롤을 사용하여 ActiveX 객체를 선택합니다. ActicveX 컨테이너를 사용하여 버튼 또는 문서와 같이 디스플레이 가능한 ActiveX 객체를 선택하고, 해당 객체를 프런트패널에 놓습니다. 블록다이어그램에서는 두 객체 모두 오토메이션 참조 번호 컨트롤로 나타납니다.

ActiveX 객체에 대한 디자인 모드

디자인 모드 옵션을 선택하면, ActiveX 컨테이너는 컨트롤 참조를 소유하여 새 컨트롤을 생성하고 해제합니다. 컨트롤은 서로 다른 디자인과 실행 모드를 갖습니다. VI를 실행할 때마다 LabVIEW는 디자인 모드 컨트롤을 제거하고 실행 모드에서 이를 새 컨트롤로 대체합니다. VI가 정지하면 LabVIEW는 실행 모드 컨트롤을 제거하고 새로운 디자인 모드 컨트롤을 생성합니다. ActiveX와 LabVIEW를 사용할 때 디자인 모드와 실행 모드의 관계는 VI 스크립팅이나 VI 서버와 같이 다른 영역의 LabVIEW 프로그래밍에서의 편집 모드와 실행 모드의 관계와 유사합니다.

빌드된 어플리케이션에는 디자인 모드 컨트롤이 포함되어 있지 않습니다. LabVIEW는 VI가 실행을 시작할 때 실행 모드 컨트롤을 생성하고 VI가 정지할 때 컨트롤을 해제합니다. LabVIEW는 디자인 모드가 아닌 실행 모드에서만 이벤트를 발생합니다. 기본 모드는 실행 모드입니다.

디자인 모드 옵션을 설정하는 방법에 대한 정보는 다음 그림을 참조하십시오.

ActiveX 프로퍼티를 설정하는 방법

ActiveX 서버를 열거나 ActiveX 컨트롤 또는 문서를 삽입한 후, ActiveX 컨트롤 프로퍼티 브라우저, 프로퍼티 페이지, 그리고 프로퍼티 노드를 이용하여 컨트롤이나 문서와 관련된 프로퍼티를 설정할 수 있습니다.

이름 설명 접근 방법
ActiveX 컨트롤 프로퍼티 브라우저 이 브라우저를 사용하여 ActiveX 컨테이너 안의 ActiveX 컨트롤 또는 문서와 관련된 모든 프로퍼티를 확인하고 설정합니다. ActiveX 컨트롤 프로퍼티 브라우저는 대화식으로 ActiveX 객체의 프로퍼티를 설정하는 쉬운 방법입니다. 다음 방법 중의 하나로 ActiveX 컨트롤 프로퍼티 브라우저에 접근할 수 있습니다:
  1. 프런트패널의 컨트롤 또는 문서에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 프로퍼티 브라우저를 선택합니다.
  2. 보기≫ActiveX 컨트롤 프로퍼티 브라우저를 선택합니다.
노트 이 브라우저는 편집 모드에서 컨테이너 내부의 ActiveX 객체에 프로퍼티를 설정할 때에만 사용할 수 있습니다.
ActiveX 프로퍼티 페이지 많은 ActiveX 객체에는 각 개별 탭에 객체와 관련된 프로퍼티를 정리해 놓은 프로퍼티 페이지가 있습니다. ActiveX 컨트롤 프로퍼티 브라우저와 같이, ActiveX 프로퍼티 페이지를 사용하여 ActiveX 객체의 프로퍼티를 대화식으로 간편하게 설정할 수 있습니다. 또한 ActiveX 컨트롤 프로퍼티 브라우저와 같이, 프로퍼티 페이지를 사용하여 오직 편집 모드에서 컨테이너 내부의 ActiveX 객체에 대해서만 프로퍼티를 설정할 수 있습니다. ActiveX 프로퍼티 페이지에 접근하기 위하여 프런트패널의 컨테이너에 있는 객체에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴에서 그 객체의 이름을 선택합니다.
노트 모든 ActiveX 객체가 프로퍼티 페이지를 제공하지는 않습니다.
프로퍼티 노드 [프로퍼티 노드]를 사용하여 ActiveX의 프로퍼티를 프로그램적으로 설정하십시오. 다음 단계를 완료하여 프로퍼티 노드를 사용하여 ActiveX 프로퍼티를 프로그램적으로 설정합니다:
  1. ActiveX 프로퍼티를 생성하려는 ActiveX 객체에 대한 참조를 얻습니다.
  2. 블록다이어그램에 프로퍼티 노드를 추가합니다.
  3. 객체의 참조를 노드의 참조 입력에 연결합니다.

다음 블록다이어그램의 예에서는 프로퍼티 노드를 사용하여 프로그램적으로 ActiveX 컨트롤의 값 프로퍼티를 변경하여, 온도가 일정 한계를 초과할 때 경고를 알리는 방법에 대해 보여줍니다. National Instruments Measurement Studio User Interface ActiveX Library의 일부인 CWButton ActiveX 컨트롤의 값 프로퍼티는 온도가 화씨 85도 이상에 이르면 변경됩니다.

이 예에서 CWButton 컨트롤은 CWButton 컨트롤의 "on" 상태인 한계 온도에 이르면 LED처럼 작동하여 색이 변하고, 경고를 디스플레이합니다.

노트 CWButton 컨트롤 프로퍼티에 대해 프로그램적으로 OffText, OffColor, OnText, OnColor 프로퍼티를 설정하는 대신, ActiveX 컨트롤 프로퍼티 브라우저나 프로퍼티 페이지를 사용하여 이러한 컨트롤에 대한 프로퍼티를 설정할 수 있습니다.

LabVIEW를 ActiveX 서버로 사용

다른 어플리케이션의 ActiveX 호출을 통해 LabVIEW 어플리케이션, VI 및 컨트롤의 프로퍼티와 메소드에 접근할 수 있습니다. Microsoft Excel과 같은 다른 ActiveX 활성화 어플리케이션은 LabVIEW의 프로퍼티, 메소드, 개별 VI를 요청할 수 있습니다. 이 때 LabVIEW는 ActiveX 서버로 동작합니다.

예를 들어, Excel 스프레드시트에 VI 그래프를 임베드할 수 있고, 스프레드시트에서 VI 입력으로 데이터를 입력하고 VI를 실행시킬 수 있습니다. VI를 실행하면 데이터가 그래프에 플롯됩니다.

사용자 ActiveX 오토메이션 인터페이스에 대한 지원

LabVIEW를 사용하는 타사 ActiveX 클라이언트에 데이터를 작성하여 LabVIEW ActiveX 서버의 프로퍼티와 메소드에 접근하면, 서버가 공개한 사용자 정의 인터페이스에 접근할 수 있습니다. 이 작업은 IDispatch가 없이 수행할 수 있습니다.

그러나 ActiveX 서버의 개발자는 사용자 인터페이스의 프로퍼티와 메소드의 파라미터가 반드시 오토메이션(IDispatch) 데이터 타입을 갖도록 해야 합니다. 여러 객체가 아닌 하나의 객체에서 여러 개의 인터페이스가 공개되도록 하려면, 서버의 개발자는 반드시 파라미터에 오토메이션 (IDispatch) 데이터 타입이 있는지 확인해야 합니다. 오토메이션 데이터 타입이 없는 경우, 단 하나의 객체에만 연결하는 것이 아니라 연결하려는 각 객체에 연결을 확립해야 합니다. LabVIEW 환경에서 이 인터페이스를 사용할 수 있습니다.

상수를 사용하여 ActiveX VI의 파라미터 설정하기

ActiveX 노드의 몇몇 파라미터는 유효한 값의 비연속적인 리스트를 허용합니다. 링 상수에서 설명적인 이름을 선택하여 파라미터 값을 설정합니다.

ActiveX VI를 만들 때 링 상수에 접근하려면, 데이터 값을 받는 노드의 파라미터에서 마우스 오른쪽 버튼을 클릭한 후 상수를 생성합니다. 링 상수에서 선택 가능한 목록은 노드에 전달된 참조 번호에 따라 달라집니다. 해당하는 숫자 데이터 값을 보려면, 링 상수에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 보이는 아이템≫디지털 디스플레이를 선택합니다.

다음 블록다이어그램은 링과 숫자형 상수를 사용하여 파라미터 값을 설정하는 방법을 설명합니다. 이 블록다이어그램은 Microsoft Excel 어플리케이션에 접근하여 메소드를 실행하고, 인덱스 파라미터에는 여러 개의 옵션이 포함되어 있습니다. 어떤 옵션을 선택하면, LabVIEW는 해당 옵션에 대한 숫자값을 디스플레이합니다.

다음 블록다이어그램의 디스플레이와 같이, LabVIEW는 현재 선택한 옵션인 MicrosoftAccess의 숫자값을 링 상수 옆의 박스에 디스플레이하도록 기본 설정되어 있습니다.

그러나, 옵션의 숫자값을 숫자형 상수로 디스플레이하도록 선택할 수도 있습니다. 다음 블록다이어그램에서 보이는 것과 같이, LabVIEW는 옵션의 숫자값을 인덱스 입력에 연결된 숫자형 상수로 디스플레이합니다.

VI에 업데이트된 ActiveX 타입 라이브러리 로드하기

.NET ActiveX 타입 라이브러리의 주요 버전이 변경된 VI를 로드할 때, LabVIEW는 경고 대화 상자를 실행시켜 변경사항에 대해 알려줍니다. ActiveX 타입 라이브러리의 보조 버전 또는 타임스탬프가 변경된 VI를 로드하면, 일단 로드된 VI는 제목 표시줄과 윈도우 메뉴에 디스플레이된 열린 VI 리스트에 별표를 포함합니다. VI를 저장하면, 새로 변경할 때까지 별표는 사라집니다.