2

Windows エクスプローラーでどのファイルが選択されているかを知る方法はありますか? ここに投稿されたチュートリアルを見てきましたIdiots guide to ...しかし、説明されているアクションは次のとおりです。

ホバー

環境

メニューのプロパティ

引っ張る

ドラッグアンドドロップ

ファイルが選択されたときに呼び出されるメソッドがあるのだろうか。たとえば、ファイルのサムネイル ビューを作成します。

ありがとう。

4

2 に答える 2

0

このpythonスクリプトに出くわしました。

from win32com.client.gencache import EnsureDispatch 

for w in EnsureDispatch("Shell.Application").Windows(): 
    print w.LocationName + "=" + w.LocationURL 

しかし、開いているフォルダーのみを取得し、そのフォルダーで現在選択されているアイテムは取得しません。

誰かもっと情報を持っていますか?

于 2008-10-24T01:02:13.263 に答える
0

AutoHotkey で行う方法は次のとおりです。

GetWindowsExplorerSelectedFile(_hWnd)
{
    local selectedFiles, file

    ; I can send ^C and parse Clipboard, but this way don't mess with clipboard at all, seems nicer.
    ; Warning: with this, you get only what is displayed in Explorer!
    ; If you kept the default Windows setting of not displaying file extensions (bad idea...),
    ; you will get partial file names...
    ControlGet, selectedFiles, List, Selected Col1, SysListView321, ahk_id %_hWnd%
    Loop, Parse, selectedFiles, `n  ; Rows are delimited by linefeeds (`n).
    {
        If (A_Index = 1)
        {
            file := A_LoopField
        }
        Else
        {
            ; Indicate that several files are selected, we return only the first one
            ; but count the total number of selected files, to indicate we return a partial result
            ErrorLevel := A_Index
        }
    }
    Return file
}

そして、エクスプローラーの編集フィールドからパスを取得します (これは問題が発生しやすいです! 存在しないか、完全なパスを表示しないように設定できます)。

核となる考え方は、Explorer の SysListView32 コントロールに、選択された項目を尋ねて、それらを取得することです。

さて、それはハックです。おそらくもっとクリーンな方法があります...

PS .: これも見つかりました: Geting ListView items in C# from SysListView32 using SendMessage
別のプロセスで動作させるにはブードゥー教が必要です...

フランスのサイトで本物のコード!

于 2008-10-24T10:58:00.270 に答える