Windows エクスプローラーでどのファイルが選択されているかを知る方法はありますか? ここに投稿されたチュートリアルを見てきましたIdiots guide to ...しかし、説明されているアクションは次のとおりです。
ホバー
環境
メニューのプロパティ
引っ張る
ドラッグアンドドロップ
ファイルが選択されたときに呼び出されるメソッドがあるのだろうか。たとえば、ファイルのサムネイル ビューを作成します。
ありがとう。
Windows エクスプローラーでどのファイルが選択されているかを知る方法はありますか? ここに投稿されたチュートリアルを見てきましたIdiots guide to ...しかし、説明されているアクションは次のとおりです。
ホバー
環境
メニューのプロパティ
引っ張る
ドラッグアンドドロップ
ファイルが選択されたときに呼び出されるメソッドがあるのだろうか。たとえば、ファイルのサムネイル ビューを作成します。
ありがとう。
このpythonスクリプトに出くわしました。
from win32com.client.gencache import EnsureDispatch
for w in EnsureDispatch("Shell.Application").Windows():
print w.LocationName + "=" + w.LocationURL
しかし、開いているフォルダーのみを取得し、そのフォルダーで現在選択されているアイテムは取得しません。
誰かもっと情報を持っていますか?
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
別のプロセスで動作させるにはブードゥー教が必要です...
フランスのサイトで本物のコード!