tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
エクスプローラでクリックしたファイルのフルパスを取得(VB6.0) ( No.0 )  [親スレッドへ]
日時: 2009/01/04 22:53
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[エクスプローラ][ファイル][]                                        *
* キーワード:ファイル名,フルパス,InternetExplorer,Shell32,Path,SHDocVw           *
***********************************************************************************
タイトル : エクスプローラでフルパス名検知
記 事 No : 13235
投 稿 日 : 2008/11/14(Fri) 11:01
元質問者 : 石田  

ユーザがWindowsエクスプローラのファイル名をクリックした際、そのフルパス名を
得る方法を教えてください。
エクスプローラからファイルをドラッグし、テキストボックスにドロップすればそのパスを
含んだファイル名が取得できる方法はNo.105で知りました。 
しかしながらドラッグ&ドロップせずに、クリックしただけでフルパス名を検知したいのです。

-----------------------------------------------------------------------------------
記事No :13239  
投稿日 :2008/11/14(Fri) 16:12  
回答者 :魔界の仮面弁士  
-----------------------------------------------------------------------------------
> ユーザがWindowsエクスプローラのファイル名をクリックした際、
使うとすれば、ShellFolderView オブジェクトの SelectionChanged イベントかな。
http://msdn.microsoft.com/en-us/library/bb774045.aspx

> そのフルパス名を得る方法を教えてください。
ShellFolderView オブジェクトの FocusedItem プロパティ/SelectedItems メソッドから
選択されている FolderItem オブジェクトを取得して、その Path を得るとか。

Form1 に ListBox を 1個貼り付け
プロジェクト→参照設定で MicroSoft Shell Controls And Automation にチェックを
入れておいて下さい
プロジェクト→参照設定→Microsoft Internet Controls にチェックを入れておいて下さい

Option Explicit
Private WithEvents FolderView As Shell32.ShellFolderView
Private WithEvents Explorer As SHDocVw.InternetExplorer

Private Sub Explorer_BeforeNavigate2( _
        ByVal pDisp As Object, URL As Variant, Flags As Variant, _
        TargetFrameName As Variant, PostData As Variant, _
        Headers As Variant, Cancel As Boolean)
    Set FolderView = Nothing
End Sub

Private Sub Explorer_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    On Error Resume Next
    Set FolderView = Explorer.Document
End Sub

Private Sub Explorer_OnQuit()
    Set FolderView = Nothing
    Set Explorer = Nothing
    Unload Me
End Sub

Private Sub Form_Load()
    On Error Resume Next
    Set Explorer = GetObject("new:{C08AFD90-F2A1-11D1-8455-00A0C91F3880}")
    Explorer.Navigate2 0&
    Explorer.ShowBrowserBar "{EFA24E64-B078-11D0-89E4-00C04FC9E26E}", True
    Explorer.Visible = True
End Sub

Private Sub FolderView_SelectionChanged()
    On Error Resume Next
    Dim fis As Shell32.FolderItems
    Set fis = FolderView.SelectedItems()

    List1.Clear
    If fis.Count > 0 Then
        Dim fi As Shell32.FolderItem
        For Each fi In fis
            List1.AddItem fi.Path
        Next
    End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set FolderView = Nothing
    If Not Explorer Is Nothing Then
        On Error Resume Next
        Explorer.Quit
        Set Explorer = Nothing
    End If
End Sub

上記実行図(画像をクリックすると元のサイズで見られます。)



 [スレッド一覧へ] [親スレッドへ]