質問です。
ファイルとEXEを関連付けて、エクスプローラー等からファイルのダブルクリックでEXEを起動する際に、ダブルクリックされたファイルのパスをEXEが取得したいのですが、どうすればいいでしょうか?
Command() 関数に、ファイルのパスが入ります。
入ってないみたいなんです・・・。
EXEのForm_Loadに
Private Sub Form_Load()
Dim strArg() As String
Dim i As Long
strArg = getArgument()
For i = 0 To UBound(strArg)
List1.AddItem strArg(i)
Next i
End Sub
' コマンドラインを取得しスペースで分割します
Function getArgument() As String()
Dim strArg() As String
Dim i As Long
strArg = Split(Command()) ' スペースで分割
Debug.Print "UBound(strArg) = " & UBound(strArg)
For i = 0 To UBound(strArg)
Debug.Print strArg(i)
Next i
getArgument = strArg
End Function
このようにしたのですが、表示されません。
ドラッグアンドドロップでの起動時はファイルパスが表示されました。
ちなみにこの関数は自作ではありません。
どうしましょうか?
関連付けが正しくないのでしょう。
たとえば,
HKEY_CLASSES_ROOT\.foo : foofile
HKEY_CLASSES_ROOT\foofile\shell\open\Command : foo.exe
のようになっているとか。
HKEY_CLASSES_ROOT\foofile\shell\open\Command : foo.exe "%1"
のように,ファイル名を渡してやる必要があります。
解決しました!YuOさん特命さんありがとうございます。
"%1"ってファイル名なんすね?MSDNに載ってます?
いやー助かりました!ありがとうございます!
ツイート | ![]() |