開発環境:VB6.0 Windows XP
使用環境:Windows全般
はじめまして。分かる方いらっしゃいましたら、教えてください。
例えば、"C:\test"とディレクトリをエクスプローラで開いているとして、
その"C:\test"というパスを取得する方法を探しています。
エクスプローラのパスを取得したいタイミングでは、
そのウィンドウはアクティブであるという条件なので、
フォルダオプションの「タイトルバーにファイルのパス名を表示する」にチェックを入れて、
GetForegroundWindow()でハンドルを取得し、
GetWindowText()でそのタイトル(パス)を取得するという方法を考えました。
しかしスマートは感じがしません。
利用するマシンの設定(フォルダオプション等)はいじりたくないからです。
他にもっとストレートな方法はないものでしょうか?
宜しくお願いいたします。
> 例えば、"C:\test"とディレクトリをエクスプローラで開いているとして、
> その"C:\test"というパスを取得する方法を探しています。
ShellFolderView オブジェクトから辿るとか。
http://windowssdk.msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/objects/shellfolderview/shellfolderview.asp
Dim O As Object
Dim F As Object
For Each O In CreateObject("Shell.Application").Windows
If InStr(TypeName(O.Document), "ShellFolder") > 1 Then
Debug.Print "==== ハンドル:"; O.hWnd; " ===="
Debug.Print "フォルダ:"; O.Document.Folder.Items().Item.Path
Debug.Print "フォーカス:"; O.Document.FocusedItem.Path
Debug.Print "選択数:"; O.Document.SelectedItems.Count
Debug.Print "選択中:"
For Each F In O.Document.SelectedItems
Debug.Print F.Path
Next
End If
Next
す、すばらしいです!!
いつも魔界の仮面弁士さんのレスを拝見し、参考にさせていただいております。
直々にアドバイスいただけた上に、非常に適確で感動いたしました。
余談ですが、昨夜は別件で深夜まで作業をしていたのですが、
朝4時前くらいに、こことは別の板でレスされている魔界の仮面弁士さんを目撃し、
さらに10時くらいには、また別の板で目撃いたしました。
いつ寝ているのですか?? 鉄人ですね^^;
くれぐれもお体にはお気をつけ下さい。
本当にありがとうございました。 今後ともよろしくお願いしますm(__)m
| ツイート |
|