OVH Cloud OVH Cloud

liste de selection par la souris

8 réponses
Avatar
noreply
bonjour
dans un dossier , je selectionne a la souris quelques fichiers ,avec
la touche controle et le clic gauche . ou se trouve la liste des
fichiers selectionnes ? apparemment pas dans le presse papier .
comment recuperer la liste de ces noms de fichiers pour l'exploiter
avec un prog ( en C) ?
un bout de code avec le bon include et fonction serait le bienvenu :)

merci d'avance .

8 réponses

Avatar
Patrick Philippot
Bonjour,

dans un dossier , je selectionne a la souris quelques fichiers ,avec
la touche controle et le clic gauche . ou se trouve la liste des
fichiers selectionnes ? apparemment pas dans le presse papier .
comment recuperer la liste de ces noms de fichiers pour l'exploiter
avec un prog ( en C) ?
un bout de code avec le bon include et fonction serait le bienvenu :)



Il suffit d'envoyer le message adéquat à la ListView:

LVM_GETNEXTITEM ou la macro ListView_GetNextItem (avec le flag
LVNI_SELECTED)

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
noreply
Le Tue, 24 Jan 2006 14:31:30 +0100, "Patrick Philippot"
écrit:

Bonjour,

dans un dossier , je selectionne a la souris quelques fichiers ,avec
la touche controle et le clic gauche . ou se trouve la liste des
fichiers selectionnes ? apparemment pas dans le presse papier .
comment recuperer la liste de ces noms de fichiers pour l'exploiter
avec un prog ( en C) ?
un bout de code avec le bon include et fonction serait le bienvenu :)



Il suffit d'envoyer le message adéquat à la ListView:

LVM_GETNEXTITEM ou la macro ListView_GetNextItem (avec le flag
LVNI_SELECTED)

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




humm merci mais ou puis je trouver de la doc qui explique comment
acceder a cette "listview" , par quel fonction avec quoi comme
arguments et on recupere ca dans quoi ? une chaine ,un pointeur ??
merci d'avance . je cherche avec google en attendant ...
Avatar
noreply
Le Tue, 24 Jan 2006 14:31:30 +0100, "Patrick Philippot"
écrit:

Bonjour,

dans un dossier , je selectionne a la souris quelques fichiers ,avec
la touche controle et le clic gauche . ou se trouve la liste des
fichiers selectionnes ? apparemment pas dans le presse papier .
comment recuperer la liste de ces noms de fichiers pour l'exploiter
avec un prog ( en C) ?
un bout de code avec le bon include et fonction serait le bienvenu :)



Il suffit d'envoyer le message adéquat à la ListView:

LVM_GETNEXTITEM ou la macro ListView_GetNextItem (avec le flag
LVNI_SELECTED)

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




je m'apercois que je me suis peut-etre mal exprime :
je selectionne ........ dans l'EXPLORATEUR de windows , pas dans un
prog personnel . c'est donc la liste faite par windows que je voudrais
recuperer pour la passer a un prog perso . est-ce possible ?
Avatar
Paul Bacelar
wrote in message news:
Le Tue, 24 Jan 2006 14:31:30 +0100, "Patrick Philippot"
écrit:

Bonjour,

dans un dossier , je selectionne a la souris quelques fichiers ,avec
la touche controle et le clic gauche . ou se trouve la liste des
fichiers selectionnes ? apparemment pas dans le presse papier .
comment recuperer la liste de ces noms de fichiers pour l'exploiter
avec un prog ( en C) ?
un bout de code avec le bon include et fonction serait le bienvenu :)



Il suffit d'envoyer le message adéquat à la ListView:

LVM_GETNEXTITEM ou la macro ListView_GetNextItem (avec le flag
LVNI_SELECTED)

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




humm merci mais ou puis je trouver de la doc qui explique comment
acceder a cette "listview" , par quel fonction avec quoi comme
arguments et on recupere ca dans quoi ? une chaine ,un pointeur ??
merci d'avance . je cherche avec google en attendant ...




http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/macros/listview_getnextitem.asp

--
Paul Bacelar
Avatar
Patrick Philippot
> je m'apercois que je me suis peut-etre mal exprime :
je selectionne ........ dans l'EXPLORATEUR de windows , pas dans un
prog personnel . c'est donc la liste faite par windows que je voudrais
recuperer pour la passer a un prog perso . est-ce possible ?



C'est la même chose. La fenêtre de droite dans l'Explorateur est une
ListView. Il "suffit" de récupérer son handle :-)) . Évidemment
l'exercice n'est pas simple.

Blague à part, ce que vous voulez faire pose un certain nombre de
problèmes. En particulier, il peut y avoir plusieurs fenêtres Explorer
ouvertes ayant chacune des fichiers sélectionnés dans la ListView. Les
objets sélectionnés pouvant être des dossiers ou des éléments non
physiques (la ListView peut activer une Shell Namespace Extension et
montrer autre chose que des fichiers ).

En fait, la seule manière propre de régler ce problème est de créer une
extension au shell qui va automatiquement récupérer la liste des
fichiers sélectionnés à la volée (au fur et à mesure de leur sélection)
et les communiquer à votre application via un mécanisme d'IPC
quelconque. L'écriture d'une telle extension demande une solide
connaissance du COM, tous les mécanismes du shell (Explorer) utilisant
uniquement le COM et pas des APIS classiques. Et même avec cette
approche, ce n'est pas évident car soit vous communiquez la liste des
objets sélectionnés au fur et à mesure de sa constitution (bon courage),
soit il faut un déclencheur (une commande du menu contextuel) indiquant
que la sélection est terminée et qu'il faut l'envoyer à votre appli. Je
vois mal un automatisme complet dans ce cas.

Vous trouverez un exemple d'une telle extension sur mon site:
http://www.mainsoft.fr/downloads.htm . Voir le package ClipName. Il
ajoute au menu contextuel des commandes permettant de copier la liste
des fichiers actuellement sélectionnés sous des formes diverses. Une
fois cette liste dans le clipboard, vous pouvez la récupérer depuis une
application. Cette extension est gratuite. Si vous voulez la distribuer
avec votre appli (non commerciale), pas de problème.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
noreply
Le Thu, 26 Jan 2006 09:22:00 +0100, "Patrick Philippot"
écrit:

je m'apercois que je me suis peut-etre mal exprime :
je selectionne ........ dans l'EXPLORATEUR de windows , pas dans un
prog personnel . c'est donc la liste faite par windows que je voudrais
recuperer pour la passer a un prog perso . est-ce possible ?



C'est la même chose. La fenêtre de droite dans l'Explorateur est une
ListView. Il "suffit" de récupérer son handle :-)) . Évidemment
l'exercice n'est pas simple.

Blague à part, ce que vous voulez faire pose un certain nombre de
problèmes. En particulier, il peut y avoir plusieurs fenêtres Explorer
ouvertes ayant chacune des fichiers sélectionnés dans la ListView. Les
objets sélectionnés pouvant être des dossiers ou des éléments non
physiques (la ListView peut activer une Shell Namespace Extension et
montrer autre chose que des fichiers ).

En fait, la seule manière propre de régler ce problème est de créer une
extension au shell qui va automatiquement récupérer la liste des
fichiers sélectionnés à la volée (au fur et à mesure de leur sélection)
et les communiquer à votre application via un mécanisme d'IPC
quelconque. L'écriture d'une telle extension demande une solide
connaissance du COM, tous les mécanismes du shell (Explorer) utilisant
uniquement le COM et pas des APIS classiques. Et même avec cette
approche, ce n'est pas évident car soit vous communiquez la liste des
objets sélectionnés au fur et à mesure de sa constitution (bon courage),
soit il faut un déclencheur (une commande du menu contextuel) indiquant
que la sélection est terminée et qu'il faut l'envoyer à votre appli. Je
vois mal un automatisme complet dans ce cas.

Vous trouverez un exemple d'une telle extension sur mon site:
http://www.mainsoft.fr/downloads.htm . Voir le package ClipName. Il
ajoute au menu contextuel des commandes permettant de copier la liste
des fichiers actuellement sélectionnés sous des formes diverses. Une
fois cette liste dans le clipboard, vous pouvez la récupérer depuis une
application. Cette extension est gratuite. Si vous voulez la distribuer
avec votre appli (non commerciale), pas de problème.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr




je vous remercie , vu la difficulte que vous soulignez ,je vais sans
doute recuperer votre ajout au menu contextuel . une petite question
encore ... a propos de menu contextuel, j'avais essaye d'utiliser le
"envoyer vers " ,et et j'avais mis dans le "send to" un raccourci vers
un prog en C qui affichait ce qu'il recevait en arguments . et bien ca
marchait ,je recuperais les noms des fichiers selectionnes ,mais
curieusement ca ne fonctionnait que jusqu'a 5 fichiers selectionnes et
parfois seulemnt 4 ,aleatoirement ,sans que la longueur des noms de
fichiers y soient pour quelque chose ! Vous voyez pourquoi ?
( si ca demande trop de recherche, laissez tomber ,de toutes facons je
vais utiliser votre package)
merci.
Avatar
Patrick Philippot
wrote:
je vous remercie , vu la difficulte que vous soulignez ,



Attention, je ne dis pas que c'est difficile :-) . Je dis qu'il faut
connaître la programmation COM pour pouvoir créer ce genre d'extension.
Ce qui demande un peu de temps si vous partez de rien.

a propos de menu contextuel, j'avais essaye d'utiliser le
"envoyer vers " ,et et j'avais mis dans le "send to" un raccourci vers
un prog en C qui affichait ce qu'il recevait en arguments . et bien ca
marchait ,je recuperais les noms des fichiers selectionnes ,mais
curieusement ca ne fonctionnait que jusqu'a 5 fichiers selectionnes...



Je ne vois pas de limitation a priori. Je peux parfaitement envoyer par
ce moyen un nombre indéterminé de fichiers à mon éditeur préféré par
exemple. Je viens de tester avec 10 fichiers. Il faut donc revoir la
manière dont votre programme traite la ligne de commande.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Patrick Philippot
> curieusement ca ne fonctionnait que jusqu'a 5 fichiers selectionnes et
parfois seulemnt 4 ,aleatoirement ,sans que la longueur des noms de
fichiers y soient pour quelque chose ! Vous voyez pourquoi ?



Autre remarque: attention à la longueur maximum de la ligne de commande.
Les noms de fichiers sont envoyés avec leur chemin d'accès complet.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr