選択されているファイル(フォルダ)を取得するには

解決


ABC  2005-12-01 20:45:41  No: 128467

VB6.0で常駐アプリを作っているのですが、

あるホットキーを押された時に、エクスプローラなどで選択されているファイル(フォルダ)を取得したいのですが、そのようなことは可能なのでしょうか?

よろしくお願いします。


魔界の仮面弁士  2005-12-01 20:57:44  No: 128468

ShellFolderView オブジェクトの SelectedItems メソッドを試してみてください。
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/objects/shellfolderview/shellfolderview.asp


ABC  2005-12-02 03:50:49  No: 128469

>魔界の仮面弁士さん
ありがとうございます。

とりあえず、今起動されているエクスプローラの一覧を取得し、そのそれぞれで選択されているファイルを取得することまで出来ました。

あと一歩のところなのですが、アクティブになっているエクスプローラの判別方法がわかりません。

ホットキーがおされた処理は以下のようになっています。

    'アクティブなウインドウハンドルを取得
    rtn = GetActiveWindow
    '起動されているエクスプローラを取得
    For Each IEApp In CreateObject("Shell.Application").Windows()
        'ハンドルを比較
        If rtn = IEApp.hwnd Then
            '選択されているファイルを取得
        End If
    Next

この処理でアクティブなウインドウハンドルが0で返ってきています。
アクティブウインドウがエクスプローラ以外でも0になっているので
ホットキーが押された時点でアクティブウインドウが変わっているのかなぁ
という予想なのですが、
どうにかしてアクティブウインドウのハンドルを取得する方法はないでしょうか?
(ホットキーはRegisterHotKeyで登録しています。)

よろしくお願いします。


魔界の仮面弁士  2005-12-02 04:44:58  No: 128470

GetActiveWindow の対象となるのは、その関数を呼び出したスレッドが
持っているウィンドウだけです。GetForegroundWindow を使いましょう。


ABC  2005-12-02 05:34:01  No: 128471

>魔界の仮面弁士さん
有難うございました。

どうやら、私が勘違いしていたようですね。
GetForegroundWindow を使ったら、アクティブウインドウのハンドルが取得できました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加