Voici comment je le fais dans 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
}
Et je reçois le chemin du champ d'édition de l'explorateur (qui est sujette à des problèmes peut être absent ou peut être configuré pour ne pas afficher! chemin complet).
L'idée de base est de demander au contrôle SysListView32 d'Explorer quels sont les éléments sélectionnés, et de les obtenir.
Maintenant, c'est un hack, il y a probablement des moyens plus propres ...
PS .: On trouve également ceci: Getting ListView items in C# from SysListView32 using SendMessage
Vous avez besoin d'voodoo pour le faire fonctionner sur un autre processus ...
réel code à a French site!