ファイルの関連付け

解決


アサシ  2002-11-20 11:23:56  No: 105458  IP: [192.*.*.*]

質問です。
ファイルとEXEを関連付けて、エクスプローラー等からファイルのダブルクリックでEXEを起動する際に、ダブルクリックされたファイルのパスをEXEが取得したいのですが、どうすればいいでしょうか?

編集 削除
特命  2002-11-20 12:33:40  No: 105459  IP: [192.*.*.*]

Command() 関数に、ファイルのパスが入ります。

編集 削除
アサシ  2002-11-20 12:51:15  No: 105460  IP: [192.*.*.*]

入ってないみたいなんです・・・。
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

このようにしたのですが、表示されません。
ドラッグアンドドロップでの起動時はファイルパスが表示されました。
ちなみにこの関数は自作ではありません。

どうしましょうか?

編集 削除
YuO  2002-11-20 13:27:11  No: 105461  IP: [192.*.*.*]

関連付けが正しくないのでしょう。
たとえば,
HKEY_CLASSES_ROOT\.foo : foofile
HKEY_CLASSES_ROOT\foofile\shell\open\Command : foo.exe
のようになっているとか。
HKEY_CLASSES_ROOT\foofile\shell\open\Command : foo.exe "%1"
のように,ファイル名を渡してやる必要があります。

編集 削除
アサシ  2002-11-20 13:41:39  No: 105462  IP: [192.*.*.*]

解決しました!YuOさん特命さんありがとうございます。
"%1"ってファイル名なんすね?MSDNに載ってます?
いやー助かりました!ありがとうございます!

編集 削除