(VB6+XP)
エクスプローラで、ある拡張子を持ったテキストファイルをダブルクリックするとそのテキストを解読して処理するソフトを作りたいと思っています。以前Command関数でテストした時はクリックしたファイル名を簡単に取得できたように記憶していましたが今実際のソフトを作ろうとしたところ関連付けでソフトは立ち上がるもののどうにもCommandの値が取れません。参照設定とか何かが不足しているのでしょうか教えてください。
Sub Main()
Dim SStr as String
'Dim FNam as String
SStr = Command()
'必要に応じてダブルコーテーションがあるときの処理
MsgBox SStr
End
関連付けは、どのようにして行いましたか?
エクスプローラーのフォルダ オプションで、既存アプリの関連付けと
自アプリの関連付けを比較してみてください。
それぞれ、どのようなコマンドラインが指定されていますか?
多くの場合、"open" アクションに対しては、
*.wri なら、『WORDPAD.EXE "%1"』
*.chm なら、『hh.exe "%1"』
*.clp なら、『clipbrd.exe %1』
などのように、"%1" が付与されているかと思います。
# アプリがフルパスで指定されているかどうか、あるいは
# 『"』を伴うかどうかはアプリによって異なります。
魔界の仮面弁士さま 迅速の回答をありがとうございます。
テキストファイルの拡張子は*.txaとしました。Command()が書かれているソフトの方はコンパイルして念のためSetupしました。関連付けは拡張子txaのファイルを右クリックして(プログラムから開く)でインストールしたものを参照しました。 これでtxaファイルをダブルクリックするとメッセージボックスが出るのですがMsgには何も書かれていません。
フォルダーオプションでtxaのアクションを見たらopenのみでした。
openの詳細設定を押してみたらCommand()を書いたソフト名が出ていますが%1は書かれていませんでした。まねをしてここに"%1"を書き加えたらエクスプローラが受け付けませんでした。
ソフトのほうがおかしいのか、関連付けのしかたが悪いのかわかりません。もしも関連付けのしかたが悪いのであればどうするのか教えてください。関連付けがどうやってなされるのかなどわからずに書いていて申し訳ありませんがよろしくお願いします。
%1の効果がやっとわかりました。関連付けを最初はフォルダオプションからやってもうまくいかなかったのですがダブルコーテーションでexeを囲むと%1を書き込むことができました。しかしこの設定方法でほとんどパソコンに縁の薄い方々にやってもらうのはややこしすぎますので本で調べたレジストリに書き込むアプリを作って誰でもできるようにして目的が達成できましたので解決とさせていただきました。
以前にはフォルダオプションから簡単にこの目的が達成できたように思います。解決にチェックを入れましたがどうやったらエクスプローラから設定できるのかご存知でしたら教えてください。