VB6.0で常駐アプリを作っているのですが、
あるホットキーを押された時に、エクスプローラなどで選択されているファイル(フォルダ)を取得したいのですが、そのようなことは可能なのでしょうか?
よろしくお願いします。
ShellFolderView オブジェクトの SelectedItems メソッドを試してみてください。
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/objects/shellfolderview/shellfolderview.asp
>魔界の仮面弁士さん
ありがとうございます。
とりあえず、今起動されているエクスプローラの一覧を取得し、そのそれぞれで選択されているファイルを取得することまで出来ました。
あと一歩のところなのですが、アクティブになっているエクスプローラの判別方法がわかりません。
ホットキーがおされた処理は以下のようになっています。
'アクティブなウインドウハンドルを取得
rtn = GetActiveWindow
'起動されているエクスプローラを取得
For Each IEApp In CreateObject("Shell.Application").Windows()
'ハンドルを比較
If rtn = IEApp.hwnd Then
'選択されているファイルを取得
End If
Next
この処理でアクティブなウインドウハンドルが0で返ってきています。
アクティブウインドウがエクスプローラ以外でも0になっているので
ホットキーが押された時点でアクティブウインドウが変わっているのかなぁ
という予想なのですが、
どうにかしてアクティブウインドウのハンドルを取得する方法はないでしょうか?
(ホットキーはRegisterHotKeyで登録しています。)
よろしくお願いします。
GetActiveWindow の対象となるのは、その関数を呼び出したスレッドが
持っているウィンドウだけです。GetForegroundWindow を使いましょう。
>魔界の仮面弁士さん
有難うございました。
どうやら、私が勘違いしていたようですね。
GetForegroundWindow を使ったら、アクティブウインドウのハンドルが取得できました。
ツイート | ![]() |