LabVIEWでActiveXを使用する



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2015ヘルプ
LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ

ActiveXが有効になっている他のアプリケーションに関連付けられているオブジェクト、プロパティ、メソッド、およびイベントにアクセスするには、LabVIEWをActiveXクライアントとして使用できます。他のアプリケーションがLabVIEWのオブジェクト、プロパティ、およびメソッドにアクセスすることを許可するには、LabVIEWをActiveXサーバとして使用することもできます。LabVIEWでActiveXを使用する詳細については、ni.comActiveXおよびLabVIEW(英語)を参照してください。

ActiveXのオブジェクト、プロパティ、およびメソッド

ActiveXが有効になっているアプリケーションには、他のアプリケーションからアクセス可能な、公開されているプロパティやメソッドを持つオブジェクトが含まれています。オブジェクトには、ボタン、ウィンドウ、ピクチャ、ドキュメント、ダイアログボックスなどユーザに見えるものと、アプリケーションオブジェクトなどユーザに見えないものがあります。アプリケーションにアクセスするには、アプリケーションのオブジェクトにアクセスし、プロパティを設定するか、またはそのオブジェクトのメソッドを呼び出します。

ActiveXイベント

イベントとは、マウスをクリックしたり、キーを押したりするなど、オブジェクトに対して行う操作を指します。オブジェクトにこれらの操作が発生すると、オブジェクトはイベント固有のデータとともにイベントを送信してActiveXコンテナに知らせます。ActiveXオブジェクトは、オブジェクトに使用可能なイベントを定義します。

アプリケーションでActiveXイベントを使用するには、イベントを登録して、イベントが発生したらそれを処理します。ActiveXイベント登録はダイナミックイベント登録に似ています。ダイナミックなイベント登録では、Whileループ内にイベントストラクチャを配置し、そのイベントストラクチャにオブジェクトリファレンスを配線し、LabVIEWに生成させたいイベントを選択します。たとえば、ActiveXコンテナからWindowsベースのツリー制御器を呼び出して、このツリー制御器に表示されている項目に関するダブルクリックイベントを生成するように指定できます。ただし、イベントを指定して登録するには、「イベント登録」関数ではなく、「イベントコールバックを登録」関数を使用することが必要なので、ActiveXイベントVIのアーキテクチャがイベント処理VIのアーキテクチャと異なります。

メモ  ナショナルインスツルメンツでは、イベント処理する必要がなくなったイベントは、「イベント登録解除」関数を使用して登録解除することを推奨します。イベントを登録解除しないと、処理するイベントを待機するイベントストラクチャがない場合でも、VIが実行中の間LabVIEWはイベントを生成しキューに入れ続けます。これにより、メモリが消費され、イベント用にフロントパネルのロックを有効にする際VIがハングアップする原因となります。

LabVIEWでActiveXイベントを生成および登録するコンポーネントについては、下表を参照してください。

コンポーネント 説明 使用例
ActiveXオブジェクト イベントを生成する対象ActiveXオブジェクトです。 イベントを生成する対象ActiveXオブジェクトを選択した後に、オートメーションrefnumを使用してイベントを指定できます。
「イベントコールバックを登録」関数 この関数は複数のイベントを処理する拡張可能なノードで、「イベント登録」関数に似ています。 「イベントコールバックを登録」関数にActiveXオブジェクトリファレンスを配線した後に、そのオブジェクトの生成したいイベントを指定できます。そのオブジェクトの生成したいイベントを指定した後に、そのイベントにActiveXオブジェクトを登録できます。
コールバックVI このVIには、イベント処理用のコードを記述します。 このVIは、「イベントコールバックを登録」関数でイベントに登録した後に作成できます。それぞれのイベントには、異なるデータ形式があります。このため、コールバックVIを作成した後でイベントを変更すると、ブロックダイアグラムのワイヤを壊す可能性があります。そのため、コールバックVIを作成する前にイベントを選択してください。

ActiveX VI、関数、制御器、および表示器

ActiveXが有効になっている他のアプリケーションに関連付けられているオブジェクト、プロパティ、メソッド、およびイベントにアクセスするためにどのVI、関数、制御器、および表示器を使用するかについては、下表を参照してください。

VI、関数、制御器、または表示器の名前 説明 使用方法
オートメーションrefnum制御器 この制御器は、ActiveXオブジェクトのリファレンスを作成します。 VIのフロントパネル上のActiveXコンテナに埋め込まれたWordドキュメントへのリファレンスを作成できます。 フロントパネル上にあるこの制御器を右クリックして、アクセスするタイプライブラリからオブジェクトを選択します。
「オートメーションオープン」関数 この関数は、ActiveXオブジェクトを開きます。 この関数を使用してMicrosoft Excel文書を開くことができます。 関数を右クリックして、ショートカットメニューからActiveXクラスを選択を選択して、オブジェクトのクラスを選択します。Refnumを開いたら、別のActiveX関数に渡すことができます。
ActiveXコンテナ このコンテナは、ActiveXオブジェクトにアクセスしてフロントパネルに表示します。 ActiveXコンテナを使用して、ウェブブラウザなど、ActiveXが有効な別のアプリケーションのボタンを表示することができます。 コンテナを右クリックし、ショートカットメニューからActiveXオブジェクトを挿入を選択します。次に、アクセスしたいオブジェクトを選択します。
プロパティノード この関数は、ActiveXオブジェクトに関連付けられているプロパティを取得(読み取り)または設定(書き込み)します。 この関数を使用して、フロントパネルでActiveXコンテナに埋め込んだオブジェクトのプロパティを設定することができます。 フロントパネルまたはブロックダイアグラム上のActiveXオブジェクトを右クリックして、作成→プロパティノードを選択します。そのオブジェクトのプロパティを設定するには、ショートカットメニューからプロパティを選択します。
インボークノード この関数は、ActiveXオブジェクトに関連付けられているメソッドを呼び出します。 プロパティノードを使用してプロパティを設定するのと同様に、この関数を使用して、フロントパネルでActiveXコンテナに埋め込んだオブジェクトのプロパティを設定することができます。 フロントパネルまたはブロックダイアグラム上のActiveXオブジェクトを右クリックして、作成→インボークノードを選択します。そのオブジェクトのメソッドを呼び出すには、ショートカットメニューからメソッドを選択します。
イベントコールバックを登録 この関数は、ActiveXオブジェクトに発生するイベントを処理します。 この関数により、Microsoft Excelスプレッドシートにデータを追加するなどのイベントを生成して登録することができます。
バリアント制御器および表示器 この制御器と表示器は、両方でActiveXコントロールとのデータの受け渡しを行います。 この制御器と表示器を使用することにより、Microsoft ExcelまたはMicrosoft WordなどのActiveX有効のアプリケーションとの間でデータの受け渡しを行うことができます。 バリアント&クラスパレットを開いて、この制御器と表示器を見つけて、フロントパネルまたはブロックダイアグラムに配置します。

データタイプマッピング

一部のActiveXプロパティおよびメソッドのデータタイプは、データの読み取りや解釈をするためにLabVIEWのデータタイプに変換されます。以下の表はActiveXデータタイプおよびそれに対応する変換されたLabVIEWデータタイプを示します。

ActiveXデータタイプ LabVIEWデータタイプ
char
short
long
hyper
float
double
BSTR

ActiveXクライアントとしてのLabVIEW

ActiveXが有効な他のアプリケーションに関連付けられているオブジェクトにLabVIEWがアクセスするときは、LabVIEWはActiveXクライアントとして動作します。LabVIEWは、ActiveXクライアントとして以下のように使用することができます。

  • Microsoft Excelなどのアプリケーションを開き、ドキュメントを作成して、そのドキュメントにデータを追加します。
  • コンテナのフロントパネルにMicrosoft WordのドキュメントやExcelスプレッドシートなどのドキュメントを埋め込みます。
  • 他のアプリケーションで使用されているヘルプファイルを呼び出すヘルプボタンなど他のオブジェクトをフロントパネルに配置します。
  • 別のアプリケーションで作成したActiveXコントロールにリンクします。

LabVIEWはオートメーションRefnum制御器またはActiveXコンテナを使用してActiveXオブジェクトにアクセスします。これは、どちらもフロントパネルオブジェクトです。ActiveXオブジェクトを選択するには、オートメーションRefnum制御器を使用します。ボタンやドキュメントなど、表示が可能なActiveXオブジェクトを選択してフロントパネル上に配置するには、ActiveXコンテナを使用します。両方のオブジェクトともブロックダイアグラム上にオートメーションRefnum制御器として表示されます。

ActiveXオブジェクトの設計モード

設計モードオプションを選択した場合、ActiveXコンテナはそのコントロールのリファレンスを所有し、新規制御器の作成やリリースを行います。コントロールでは、設計モードと実行モードが区別されます。VIを実行するごとに、設計モードの制御器が削除され、実行モードで新規の制御器に入れ替えられます。VIを停止すると、実行モードの制御器は削除され、新規の設計モードの制御器が作成されます。ActiveXおよびLabVIEWを使用するときの設計モードと実行モードの関係は、VIスクリプトやVIサーバなど、LabVIEWプログラミングの他の分野での編集モードと実行モードの関係に似ています。

ビルドアプリケーションには、設計モード制御器はありません。LabVIEWは、VIが開始されたときに実行モードの制御器を作成し、VIが停止されるたときに、この制御器をリリースします。LabVIEWは実行モードでのみイベントを生成し、設計モードではイベントを生成しません。デフォルトモードは実行モードです。

設計モードを構成する方法については、下図を参照してください。

ActiveXプロパティを設定する方法

ActiveXサーバ開始後、または、ActiveXコントロールやドキュメントの挿入後、ActiveXコントロールプロパティブラウザ、プロパティページ、およびプロパティノードを使用して、そのコントロールまたはドキュメントに関連付けられたプロパティを設定することができます。

名前 説明 アクセスする方法
ActiveXコントロールプロパティブラウザ このブラウザを使用して、ActiveXコントロール、またはActiveXコンテナ内のドキュメントに関連するすべてのプロパティを表示および設定することができます。ActiveXコントロールプロパティブラウザは、ActiveXオブジェクトのプロパティを対話的に設定する簡単な方法です。
メモ  ブラウザでプロパティを設定できるのは、編集モードで、かつコンテナ内のActiveXオブジェクトに対してのみです。
ActiveXコントロールプロパティブラウザには、以下のいずれかの方法でアクセスできます。
  1. フロントパネルでコンテナ内のコントロールまたはドキュメントを右クリックし、ショートカットメニューからプロパティブラウザを選択します。
  2. 表示→ActiveXコントロールプロパティブラウザを選択します。
ActiveXプロパティページ 多くのActiveXオブジェクトには、別のタブのオブジェクトに関連付けられたプロパティを構成するプロパティページが含まれます。

ActiveXページは、ActiveXコントロールプロパティブラウザと同様、ActiveXオブジェクトのプロパティを対話的に設定する簡単な方法です。プロパティページでプロパティを設定できるのも、ActiveXコントロールプロパティブラウザと同様に、編集モードで、かつコンテナ内のActiveXオブジェクトに対してのみです。
メモ  すべてのActiveXオブジェクトにプロパティページががあるわけではありません。
ActiveXプロパティページにアクセスするには、フロントパネルのコンテナにあるオブジェクトを右クリックして、ショートカットメニューからオブジェクト名を選択します。
プロパティノード プロパティノードを使用してActiveXプロパティをプログラム的に設定します。 ActiveXプロパティをプロパティノードを使用してプログラム的に設定するには、以下の手順に従います。
  1. ActiveXプロパティを作成する対象のActiveXオブジェクトのリファレンスを取得します。
  2. ブロックダイアグラムにプロパティノードを追加します。
  3. オブジェクトのリファレンスをノードのリファレンス入力に配線します。

以下のブロックダイアグラムサンプルは、温度が一定限度を超えたときにユーザに警告するために、プロパティノードを使用してActiveXコントロールのプロパティ値をプログラム的に変更します。ナショナルインスツルメンツMeasurement StudioユーザインタフェースActiveXライブラリの一部であるCWButton ActiveXコントロールの値プロパティは、温度が華氏85度以上になると変更されます。

このサンプルでは、CWButtonコントロールがLEDとして動作し、色が変化して温度が制限値を超えたとき(CWButtonコントロールがONの状態)に警告を表示します。

メモ  CWButtonコントロールプロパティのOffText、OffColor、OnText、OnColorプロパティをプログラム的に設定する代わりに、ActiveXコントロールプロパティブラウザまたはプロパティページを使用して、これらのコントロールのプロパティを設定することができます。

ActiveXサーバとしてのLabVIEW

他のアプリケーションからActiveX呼び出しによってLabVIEWアプリケーション、VI、およびコントロールのプロパティとメソッドにアクセスすることができます。Microsoft ExcelなどのActiveXが有効な他のアプリケーションは、LabVIEWからプロパティ、メソッド、および個々のVIを要求することができます。この場合、LabVIEWはActiveXサーバとしての動作します。

たとえば、ExcelのスプレッドシートにVIのグラフを埋め込むと、スプレッドシートからVIの入力にデータを入力してVIを実行できます。VIを実行すると、グラフにデータがプロットされます。

ActiveXオートメーションのカスタムインタフェースのサポート

LabVIEWを使用してLabVIEW ActiveXサーバのプロパティおよびメソッドにアクセスするサードパーティActiveXクライアントを作成する場合、サーバにより公開されているカスタムインタフェースにアクセスできます。これは、IDispatchなしで行えます。

ただし、ActiveXサーバの開発では、これらのカスタムインタフェースのプロパティおよびメソッドのパラメータのデータタイプがオートメーション(IDispatch)であることを確認してください。サーバの開発では、複数のオブジェクトを通じてではなく、1つのオブジェクトから複数のインターフェイスを公開するために、パラメータのデータタイプがオートメーション(IDispatch)であることを確認してください。データタイプがオートメーションでない場合、1つではなく、接続対象の各オブジェクトに接続を作成する必要があります。ただし、従来どおりLabVIEW環境でインタフェースを使用することができます。

定数を使用してActiveX VIのパラメータを設定する

ActiveXノードのパラメータには、有効な値の離散リストを受け入れるものがあります。これらのパラメータ値を設定する場合は、リング定数から該当する名前を選択します。

ActiveX VIの作成時にリング定数にアクセスするには、データ値を受け付けるノードのパラメータを右クリックして、ショートカットメニューから定数を作成します。リング定数で選択できる定数は、ノードに渡されるRefnumによって異なります。対応する数値データを表示するには、リング定数を右クリックしてショートカットメニューから表示項目→デジタル表示を選択します。

以下のブロックダイアグラムは、リング定数および数値定数を使用してパラメータ値を設定する方法を示しています。ブロックダイアグラムはMicrosoft Excel Applicationにアクセスして、メソッドを実行し、Indexパラメータには複数のオプションが含まれています。オプションを選択すると、LabVIEWはそのオプションに対応する数値を表示します。

以下のブロックダイアグラムが示すように、デフォルトでは、リング定数の横のボックスに、現在選択されているオプションMicrosoftAccessを表す数値が表示されます。

しかし、数値定数にオプションを表す数値を表示することもできます。以下のブロックダイアグラムが示すように、Index入力に配線された数値定数には、オプションを表す数値が表示されます。

更新されたActiveXタイプライブラリとVIをロードする

ActiveXタイプライブラリのメジャーバージョンに変更のあるVIをロードすると、LabVIEWは警告ダイアログボックスを表示し、変更があったことを報告します。ActiveXタイプライブラリのマイナーバージョンまたはタイムスタンプに変更のあるVIをロードすると、ロードされた後、VIのタイトルバーおよびウィンドウメニューに表示される開かれているVIのリストにアスタリスクが表示されます。VIを保存するとアスタリスクが消え、新たな変更を行うとアスタリスクが表示されます。



この記事は役に立ちましたか。

役に立たなかった