今まではjpgなどの拡張子で関連付けられたソフトを幾つか作りましたが今回は「関連付けられる側」のソフトを作りたいと思います。 例えば「*.abc」みたいなデータをエクスプローラでクリックすると「abc」の拡張子に関連付けたれたソフトが「*.abc」を読み込んで起動するようにしたいのですがこのようなことは可能なのでしょうか? 宜しくご教示ください。
それはソフトの作り方の問題ではなく、OSの設定の問題です。
設定をかえさえすれば、好きな拡張子を好きな実行ファイルに
関連付けることができます。
たとえば、OSの設定でjpgをメモ帳に関連付けることも可能で、
そのように設定すれば、jpgファイルをダブルクリックすれば
メモ帳が起動しようとします。
ただし、正常に開けるかどうかは、また別の問題です。
Sayさん 回答をありがとうございます でも当方の質問の仕方が悪かったのかと思いますので再度一寸見方を変えて質問させていただきます。
(例)独自でメモ帳モドキのソフトを作ったとします。 このソフトではテキストファイル(例えばABC.txt)を選択してからOkボタンを押せば選択したテキストファイルが画面に表示されるよういしてあるとします。
このソフトを単に立ち上げるだけならshell関数で他のソフトから立ち上げるとかエクスプローラでソフトのファイル名をクリックすれば立ち上げることは可能です。 しかし「*.txt」にこのソフトを関連付けたとしてもそれだけでは「立ち上げてから「ABC.txt」を自動的に読み込んで表示させることはできないと思います。 これが出来るようにするにはどのような方法があるのか教えてください。
関連付け起動された場合、文書ファイルのパスは、通常、コマンドラインに
引数として渡されますので、起動時にその引数を調べるようにしてください。
コマンドライン引数は、VB.NETならばMainプロシージャの引数、または
Environment.GetCommandLineArgsメソッドで受け取れます。
VB6ならCommand関数、HTMLアプリケーションならばHTA.CommandLineプロパティ、
WSHならばWshArgumentsオブジェクトです。
ShellExecuteEx(API関数)について調べてみてください。
あと、関連付け起動で呼び出す場合は、
ret = CreateObject("WScript.Shell").Run("C:\TEST.TXT", vbNormalFocus, True)
という感じで行えます。
なお、上記で最後の引数をFalseにした場合は、呼び出したプログラムの
終了を待たずに、次の行が続けて実行されます。
魔界さん、Sayさん。 ご親切なアドバイスをありがとうございました。
FileName = Command だけで関連付けられたファイル名を取得することができました。 これが取得できればあとはもう苦労はありません。 本当にありがとうございました。おかげでこれで各種のプログラムが大変便利になります。 大感謝です。
ツイート | ![]() |