LabVIEWのWeb Browser Controlを試しました

LabVIEWからブラウザにアクセスするには?
…という課題に直面したことはありますか?ほとんどの人はないと思いますが、私はあります。当時はInternet Explorer(IE)を使っていたような時期で、確かActiveXコントロールでIEにアクセスして対応したと思います。ところが、この2026年現代、IEは前時代の遺物であり、IEを表立って使う人はいないと思います。会社のシステムがIEを前提にしているためにEgdeをIEモードで動かして場当たり的に延命しているかもしれませんが。

LabVIEWでも2026 Q1からIEベースのテクノロジーに頼らなくてもウェブブラウザーを表示できるようになりました。まあ、WebView2というのを使いこなせるならそれ以前から対応できましたが。今回はLabVIEWの標準機能でウェブブラウザーを表示する機能について紹介します。

Web Browser Control

LabVIEW 2026 Q1からWeb Browser Controlという表示器が実装されました。

image
関数パレット

関数パレットのLayout → Web Browser Contorolに該当の表示器があります。上ではModernのところを選んでいますが、Fuse Design Systemにも同じ表示器があります。Silver、System、Classicには見当たりませんでした。これを使って、簡単なVIを作りました。

image
ブロックダイアグラム

これはURL制御器で指定したURLのウェブページを表示するVIです。Web Browser Controlは文字列なんですね。これを実行するとこんな感じになります。

image
実行中

指定したURLのウェブページが表示されました。LabVIEWでこれが簡単にできるのはうれしいです。

image
日本語検索中

…日本語で検索すると左上に出てくるパターンなんですね。しかも、決定しても検索欄に表示されないです。これはこのサイトに限らず、GoogleやBingのような検索サイトでも同じです。英数字ならちゃんと入力できます。それと、LabVIEWのフロントパネルに文字列制御器を置いて、日本語のテキストをコピーしてからWeb Browser Controlの検索欄に貼りつけることはできます。…めんどくさいですね。

JavaScriptとその他のメソッド

Web Browser ControlではJavaScriptを実行することができるみたいです。しかし、私はJavaScriptにはくわしくないので、JavaScriptを含むhtmlをCopilotさんに作ってもらいました。

htmlのスクリプト部分
  <script>
    document.getElementById("sendBtn").onclick = function() {
      const text = document.getElementById("textInput").value;
      if (text.trim() === "") return;
	  
	  // LabVIEW に送信
	  window.chrome.webview.postMessage(text);

      const chat = document.getElementById("chat");
      const div = document.createElement("div");
      div.className = "msg";
      div.textContent = text;
      chat.appendChild(div);

      document.getElementById("textInput").value = "";
    };
	
      function addMessageFromLabVIEW(text) {
      const chat = document.getElementById("chat");
      const div = document.createElement("div");
      div.className = "msg ai";
      div.textContent = text;
      chat.appendChild(div);

      // スクロール追従
      window.scrollTo(0, document.body.scrollHeight);
    }
	
  </script>
image
JavaScriptの実行

ここではフロントパネルのButtonを押すと、Web Browser ControlのExecute JavaScriptメソッドで”function addMessageFromLabVIEW(text)”を実行するようにしてます。このスクリプトを実行すると、htmlのチャット風の会話が進みます。このスクリプトではUTF-8で入力してもうまくいかなかったので、UTF-8をバイト配列に変換してからシステム文字列にして入力しています。JavaScriptにくわしいといろいろできそうですね。

ほかには次のメソッドがあります。

  • Navigate Backward
  • Navigate Forward
  • Reload Page
  • Stop Loading Page

ウェブブラウザでよくある「戻る」や「再読み込み」などですね。

イベント

Web Browser Control表示器には、通常の制御器にあるようなイベントに加えて、見慣れないイベントがありました。

image
Web Browser Controlのイベント

Load Finishedはウェブページの読み取りが終わったときに発生するイベントだと思いますが、URL Navigationとは何でしょうか?試してみました。

image
URL Navigation?イベント

どうやら、Web Browser Controlの中で別のページを参照したときに発生するイベントです。URL 2表示器がこのイベントが発生したときにそのときのURLを表示する表示器ですが、Web Browser Control内でウェブページを変えるととこの表示器に変更後のURLが表示されました。このイベントは?のあるもの(フィルターイベント)なので、移動したページに不都合があればイベントを無効にすることができます。

感想

LabVIEWでウェブブラウザーを扱う需要がどのくらいあるか分かりませんが、全くないわけではありません。私も何件か経験したことがあります。今は簡単にLabVIEW内でウェブページにアクセスできるし、IEと運命を共にする必要がなさそうなのがいいですね。日本語の入力は残念なところがありしたが、まあいいでしょう。

欲しい機能

  • Callbackを検出したときにイベントストラクチャで検出する機能。これがあるとブラウザーからLabVIEWの情報送信ができます。JavaScriptでできるのかな?

これをやるには、今の時点ではWebView2をがんばるしかないのかな?

WebView2 Toolkit for LabVIEW – Download – VIPM by JKI

私はJavaScriptをがんばれないので、このツールキットを利用します。このツールキットでは2026ではCallbackで「CoreWebView2WebMessageReceivedEventArgs」が発生したときにユーザーイベントを発生してイベント処理ができます。コードを見た限り、2025年以前はあやしいかもですが。

htmlの本文やヘッダーを取りたい場合は、手動でコピーするかHTTPクライアントのGETなどを使ってください。

タイトルとURLをコピーしました