COMMANDE DU MENU CONTEXTUEL POUR RÉCUPÉRER LES CHEMINS D'UNE SÉLECTION DE FICHIE

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 7 mars 2006 à 15:41
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 - 1 oct. 2008 à 17:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36426-commande-du-menu-contextuel-pour-recuperer-les-chemins-d-une-selection-de-fichiers-dans-l-explorateur

cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
1 oct. 2008 à 17:48
et un truc du genre :

Private Sub Form_Load()
If App.PrevInstance = True Then
'programme déjà lancé
Else
'on continue
End If
End Sub

Sinon tu peux utiliser des exemples sur le site qui montre comment réutiliser une instance existante d'un programme pour lui envoyer des données au lieux de ré-ouvrir le programme.
oommeeggaa3d Messages postés 97 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 3 septembre 2010
1 oct. 2008 à 16:02
Ce comportement n'est pas gérable a priori : si la form est légèrement longue à afficher, le programme est lancé deux fois.

Pour contourner le problème j'ai séparé l'exécutable qui récupère le nom des fichiers/répertoires cliqués et qui envoie le tout à mon application, au bout d'un temps défini par un timer (en gros 500 ms).
C'est un peu tordu, mais à moins de freezer le système le temps qu'une fenêtre apparaisse, je ne vois pas comment faire.

Pour la base de registre, je n'ai pas le même souci que toi étant donné que je crée la clé durant l'installation de mon application par un fichier Setup. (inno setup).
La clé est effacée en cas de désinstallation du logiciel.
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
1 oct. 2008 à 15:01
C'est à toi de prévoir ce comportement. Personnellement, je n'utiliserais de toute manière pas ce code car les références dans la base de registre doivent être supprimées manuellement. Ça fait pas pro.
oommeeggaa3d Messages postés 97 Date d'inscription dimanche 24 avril 2005 Statut Membre Dernière intervention 3 septembre 2010
1 oct. 2008 à 13:54
pour ma part je rencontre un problème en intégrant ton code dans mon appli :
lorsqu'on sélectionne plusieurs fichiers dans l'explorateur et que l'on utlise ensuite le clic droit : il relance plusieurs session de l'application, donc sans détecter sa présence.
frqn Messages postés 1 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 7 mars 2008
7 mars 2008 à 06:35
Bravo pour ce code utile et simple à adapter. J'ai une application qui fonctionne avec le SendTo pour récupérer une liste de fichiers sélectés dans l'explorer, et j'avais donc le problème de la limitation bizarre par Windows de la taille de la ligne commande. J'ai utilisé ce code pour passer par le menu contextuel au lieu du SendTo, fonctionnement OK sauf que je n'arrive pas à déclencher l'exécution automatique de mon ancienne appli. J'ai ajouté un appel dans la procédure unload de la form contenant la listbox, ca marche, mais ça oblige l'utilisateur à fermer le feuille pour continuer le travail.
Y a t'il un moyen de s'apercevoir qu'on n'a plus de messages à attendre, pour déclencher automatiquement l'exécution de la suite? J'ai essayé de m'envoyer un message au démarrage de la Sub main, en espérant qu'il allait s'empiler sur les autres, pour le décoder dans la form et forcer le unload, ça ne marche pas, la synchronisation ne de fait pas. Merci de vos suggestions.
cs_milo2009 Messages postés 180 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 8 août 2011 1
27 juil. 2006 à 17:13
Pour effectué des opérations sur la base de registre il y a :

Private Sub Lire_Click()

'permet de lire une valeur dans la base de registre
Set WshShell = CreateObject("Wscript.Shell")

Text1.Text = WshShell.RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\MenuShowDelay") 'Mettez ici le chemin de la clé et le nom d'un paramêtre pour obtenir sa valeur

'Remarque :HKEY_CURRENT_USER peut être remplacé par HKCU
'On peut mettre n'importe quelle branche comme ça

End Sub

Private Sub Ecrire_Click()
'Permet d'écrire dans la base de registre tout type de valeur (valeur chaîne, dword, binaire) ou de créer une nouvelle branche ....

Set WshShell = CreateObject("Wscript.Shell")

WshShell.RegWrite "HKCU\essaiVisualBasic\Nom d'un paramètre", "Valeur de celui-ci"
WshShell.RegWrite "HKCU\essaiVisualBasic\Créer Clé 1 Dword", 1, "REG_DWORD"
WshShell.RegWrite "HKCU\essaiVisualBasic\Créer Clé 2 binaire", 1, "REG_BINARY" 'Le 1, c'est la valeur de la valeur binaire (!)


End Sub

Private Sub Supprimer_Click()

'Permet d'effacer dans la base de registre tout type de valeur (valeur chaîne, dword, binaire)

Set WshShell = CreateObject("Wscript.Shell")

WshShell.RegDelete "HKCU\essaiVisualBasic\NOM DU PARAMETRE" ' supprime le paramètre
WshShell.RegDelete "HKCU\essaiVisualBasic\NOM D'UNE CLE" 'Supprime une clé


End Sub
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
10 avril 2006 à 18:48
A ma connaissance, non...

Je l'ai toujours fait à la main...
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
10 avril 2006 à 14:57
et par le code y a pas une methode simple (autant pour ajouter que retirer la clé) ?
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
9 avril 2006 à 15:07
Renfield --> Je sais mais cette source est juste un exemple. Elle est nullement exploitable dans l'état de toutes façons...
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
9 avril 2006 à 15:06
Tu fais un clic droit sur le fichier reg puis Mofifier. Ensuite, tu ouvres la fenêtre Exécuter dans le menu Démarrer et tu tapes regedit. Tu te rends à l'adresse indiquée dans le fichier et tu supprimes ce que ça t'a rajouté, c'est tout...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 avril 2006 à 15:05
Démarrer > Regedit > Ok

ensuite, tu supprime la clé


HKEY_CLASSES_ROOT\*\shell\Tester Projet1


en passant, pas top du tout, ce chemin en dur, que l'on trouve dans le fichier .reg...
cs_PaTaTe Messages postés 2126 Date d'inscription mercredi 21 août 2002 Statut Contributeur Dernière intervention 19 février 2021 2
9 avril 2006 à 12:22
Moi et la base de registre ca fait 2 !

Comment supprimer les modifications mis par le fichier registre ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 mars 2006 à 10:23
un très bon bouquin expliquant les extensions shell en VB6 :

http://www.amazon.fr/exec/obidos/ASIN/1565926706/402-2654299-7138526
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
13 mars 2006 à 10:17
D'ailleurs voici une source qui l'explique:

http://www.vbfrance.com/codes/MENU-CONTEXTUEL-SYSTEME_20732.aspx

mais c'est vrai que c'est pas mal compliqué à comprendre pour un débutant...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 mars 2006 à 09:47
les extensions shell sont basées sur des interfaces. Il faut les incorporer dans VB, en utilisant, des fichiers tlb.
laverdanny Messages postés 33 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 3 août 2007
13 mars 2006 à 07:37
Et comment l'on s'y prends pour le faire en VB ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 mars 2006 à 16:09
si, bien sur ^^
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
7 mars 2006 à 15:44
Effectivement, d'ailleurs je ne crois pas que ce soit possible en vb, non???
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 mars 2006 à 15:41
une alternative au développement d'une Extension Shell ^^
Rejoignez-nous