Question

Existe-t-il un moyen de savoir quel fichier est sélectionné dans l'explorateur Windows? J'ai consulté le didacticiel posté ici Le guide des idiots sur ... mais le Les actions décrites sont:

survol

contexte

propriétés du menu

faites glisser

glisser-déposer

Je me demande s’il existe une méthode qui est invoquée lorsqu’un fichier est sélectionné. Par exemple pour créer une vue miniature du fichier.

Merci.

Était-ce utile?

La solution

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 depuis le champ d'édition de l'explorateur (qui est sujet à des problèmes! Peut être absent ou peut être configuré pour ne pas afficher le chemin complet).

L'idée principale 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 bidouillage, il y a probablement des moyens plus propres ...

PS: a également trouvé ceci: Obtention Éléments ListView en C # à partir de SysListView32 à l'aide de SendMessage
Vous avez besoin de voodoo pour que cela fonctionne sur un autre processus ...

Code réel sur un site français !

Autres conseils

Je suis tombé sur ce script python.

from win32com.client.gencache import EnsureDispatch 

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

Mais je ne reçois que le dossier ouvert et non l'élément actuellement sélectionné dans ce dossier.

Quelqu'un a plus d'informations?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top