08-29-2011 11:00 PM
例えば、拡張子がwmvのファイルをダブルクリックすると、Wndows Media Playerが開かれ動画表示されます。同じ様に、LabVIEWに関連づけられたファイルをダブルクリックすることで、関連するLabVIEWプログラムが立ち上がり、クリックしたファイルデータを読み込んで任意の操作を行えるプログラムを作成したいのですが、ご教示頂けないでしょうか。ファイルをクリックすればプログラムが立ち上がり、クリックしたファイルパスを認識するプログラムでも構いません。このようなことができれば、LabVIEWが非常に使い勝手の良いものになります。
解決済! 解決策の投稿を見る。
08-30-2011 01:17 AM - 編集済み 08-30-2011 01:18 AM
「データファイルを VI に関連づけたい」ということでしょうか。
若干面倒ですが、できなくはありません。
例えば、拡張子 ZZZZ というファイルを、ある特定のVIに関連付けて(ここではZZZZファイルは
文字列がタブ区切りで2次元配列になったファイルということにします)、
ZZZZファイルをダブルクリックしたら、(LabVIEWが起動して)そのVIが開いて実行され、
ZZZZファイルが読まれてVIで処理される、ということを考えます。
●VIの準備
添付のVIのようなものを組んでおきます。
このVIは、kernel32.dll の GetCommandLineA( ) 関数を使ってコマンドライン文字列を取得し、
開こうとしたZZZZファイル名が得られるようにしてあります(前半)。
後半は、そのファイルを開いてタブで区切って2次元文字列配列に表示する、という内容です。
このVIは、VIプロパティで「開かれたら実行する」にしておきます。
●ファイルの関連付け
次に、ZZZZファイルをVIに関連づけます。ここからは、Windowsの操作です。
XPの場合で書きますので、上位OSの場合はその方法に従って下さい。
(1)エクスプローラのメニューの「ツール」⇒「フォルダオプション」を開く
(2)「ファイルの種類」タブに移動
(3)「新規」をクリックし、ファイルの拡張子には「zzzz」と入力して「OK」
(4)「ファイルの種類」タブの「登録されているファイルの種類」リストから、今作った ZZZZ のエントリーを選ぶ
(5)「詳細設定」を開いて、「新規」をクリック
(6)開いた設定ウインドウで、
・「アクション」には「open」(又は「&open」)
・「アクションを実行するアプリケーション」には、
"C:\...(LabVIEW本体のパス)...\LabVIEW.exe" "C:\...(viのパス)..\110830-sample1.vi" "%1"
と書く。予めLabVIEW本体のLabVIEW.exeのフルパスや、開くためのVIのフルパスは調べておく。
パスの中に空白が無ければ、ダブルクオート " " は不要。
ただし最後の "%1" だけはダブルクオートで囲っておく。
(7)アクションとアプリケーションを設定したら「OK」で閉じる
(8)「常に拡張子を表示する」は、表示するようにしておいてもよい。
(9)「OK」で閉じ、「フォルダオプション」も「OK」で閉じる。
これで、ZZZZファイルをダブルクリックすると、アプリケーションとしてLabVIEWが、
110830-sample1.vi をコマンドラインに伴って開かれ、ロードされた110830-sample1.viは
「開かれたら実行」なので実行が始まり、GetCommandLineA( )関数で得られた
コマンドライン文字列の3番目の引数から「ユーザがダブルクリックしたファイル名」を
取得できます。
あとはそのファイル名をパスにして読み込み、開いて煮て焼けばOKです。
※なお、コマンドラインの "%1" (ここではZZZZファイル名)も、実際にはLabVIEW.exeに
渡されており、無視されています。たしか、LabVIEWに渡さない記号があったような気が
したのですが、記憶違いかも知れません。まあ、関連付けたいファイルは独自の拡張子か、
元々LabVIEWと結びついていた拡張子ではないと思うので、実害はないかも知れませんが・・・
08-30-2011 04:47 AM
ありがとうございました。実行プログラムベースでうまくいきました。いろいろと応用がききそうです。感謝申し上げます。
なお、手順(6)でviベースのプログラムは「指定されたプログラムが見つかりませんでした・・・」というエラーがでましたので、
実行ファイルにしてリンクさせたところ(ただし、"%1"をいれるとエラー)うまくいきました。
元々、実行プログラムで使いたかったので満足しています。ありがとうございました。