| Récupérer nom fichier sur clic droit menu contextuel Windows | |
|
|
|
Auteur | Message |
---|
Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Dim 30 Oct 2016 - 15:12 | |
| C'est bien pour ça que mon code est: - Code:
-
dim f$ f$ = param_value$(1) message f$ terminate pour avoir le premier paramètre. | |
|
| |
Yannick
Nombre de messages : 8610 Age : 52 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 30 Oct 2016 - 15:33 | |
| Bonjour, bonjour... Je viens mettre mon petit bordel dans l' histoire. J' ai créé un dossier "C:\BasToExe". J' ai placé une copie de KGF.dll dedans. Puis, j' ai pondu le programme suivant en plaçant sa version exécutable dans le dossier cité au dessus : - Spoiler:
- Code:
-
dim path$,src$,nom$,kgf$,res%,prog$,m$
prog$ = param_value$(0) src$ = param_value$(1)
kgf$=file_extract_path$(prog$)+"KGF.dll"
m$ = "Chemin fichier source : "+src$+chr$(13) m$ = m$+"Chemin dll : "+kgf$+chr$(13) m$ = m$+"Chemin du programme Panoramic : "+prog$ message m$
hide 0 height 0,100 width 0,350 top 0,(screen_y-height(0))/2 left 0,(screen_x-width(0))/2 font_name 0,"arial" caption 0,"Bas to Exe"
alpha 1 top 1,10 left 1,10
memo 11 hide 11
if file_exists(kgf$)=1 if src$<>"" show 0
file_load 11,src$ caption 1,"Convertion de : "+src$+chr$(13)+"Veuillez patienter..."
nom$=left$(src$,len(src$)-4)+".exe"
dll_on kgf$ if file_exists(nom$)=1 then file_delete nom$ prog$ = param_value$(0) res% = dll_call3("CompilePanoramicToEXE",adr(prog$),handle(11),adr(nom$)) dll_off messagerie(res%) else messagerie(2) end_if else messagerie(1) end_if
end
sub Messagerie(n%) dim_local i% if n%<1 i%=(n%*-1) select i% case 0 caption 1,"Le fichier : "+nom$+" a été créé !" case 1 caption 1,"Une erreur inattendue s' est produite !"+chr$(13)+"Ce programme va se fermer." case 2 caption 1,"Nom de programme invalide !"+chr$(13)+"Ce programme va se fermer." case 3 caption 1,"Programme introuvable !"+chr$(13)+"Ce programme va se fermer." case 4 caption 1,"Nom de fichier *.exe invalide !"+chr$(13)+"Ce programme va se fermer." case 5 caption 1,"Le programme : "+nom$" existe déjà !"+chr$(13)+"Ce programme va se fermer." case 6 caption 1,"Erreur en copie du moteur Panoramic"+chr$(13)+"Ce programme va se fermer." case 7 caption 1,"Erreur en écriture dans le fichier *.exe"+chr$(13)+"Ce programme va se fermer." end_select else if n%=1 message "KGF.dll est introuvable !"+chr$(13)+"Ce programme va se fermer." end_if if n%=2 message "Aucun fichier n' a été sélectionné !"+chr$(13)+"Ce programme va se fermer." end_if end_if wait 2000 terminate end_sub
Ensuite, j' ai suivi les étapes pour Regedit.exe en mettant ceci en command : (zut on peut plus héberger d' images, c' est louche...)bref la command : "C:\BasToExe\BasToExe.exe" %1 Mais là j' ai des résultats variables.Si mon source *.bas est sur le bureau => cela fonctionne Si mon source est dans un dossier sur le bureau => cela me lance le source comme si il était dans l' éditeur. Si le dossier de mon source est sur le bureau et que son est composé avec un espace => param_value$(1) est tronqué j' ai essayé de modifier la commande mais c' est encore comme cela que le résultat est parfois le bon. | |
|
| |
Yannick
Nombre de messages : 8610 Age : 52 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 30 Oct 2016 - 15:39 | |
| Ha ! J' oubliais !
Si on se sert de Param_value$(1) pour passer le chemin du source.
Le dossier courant ( dir_current$ ) devient de fait le dossier du source passé en paramètre !
Donc si il vous vient à l' idée de vous basez sur une variable pour les chemin du style : path$=dir_current$ puis : kgf$= path$+"KGF.dll" Laissez tomber, c' est pas la peine. | |
|
| |
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Dim 30 Oct 2016 - 15:45 | |
| Salut ygeronimi ! Merci de participé à nos recherches. Je vois que tu fais avancer le smilblick ! Bon par contre pour la solution c'est pas gagné... J'ai l'impression que tout s'embrouille et que les résultats sont différents d'un PC à un autre. Et surtout d'un emplacement à un autre... | |
|
| |
Yannick
Nombre de messages : 8610 Age : 52 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 30 Oct 2016 - 15:55 | |
| Oui, c' est le souk chez bill ! Une autre chose bizarre. Comme je suis sous w10 pour retrouver regedit, j' ai ouvert un dossier sur C:\ et j' ai tapé regedit dans la zone de recherche et là, surprise ! Le monsieur qui cherche dans windows m' a sorti regedit à 4 emplacement différents ! Plus drôle encore, les 4 n' ont pas la même taille. | |
|
| |
Yannick
Nombre de messages : 8610 Age : 52 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 30 Oct 2016 - 17:45 | |
| Bon, après redémarrage de mon ordi. Mon programme agit comme la fonction exécuter de l' éditeur... Pour ce qui est de "command", j' ai fouillé dans le registre et toutes les command sont ainsi avec %1 chemin_du_programme %1 avec un espace entre le chemin et %Je ne m' explique pas le pourquoi du comment .A moins que j' ai fait une bourde dans mon programme... | |
|
| |
Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Lun 31 Oct 2016 - 0:15 | |
| J'ai résolu le problème !En fait, si un programme Panoramic est lancé par l'explorateur, il tente toujours d'exécuter le fichier qui lui est passé en paramètre, tout comme si ce fichier était exécuté par Panoramic.exe. Donc, s'il s'agit d'un source Panoramic, il sera exécuté. S'il s'agit d'un autre type de fichier, il y aura une erreur de syntaxe en ligne 1 - logique. Je pense que ceci est un bug dans le code d'initialisation de Panoramic. Mais heureucement, j'ai trouvé le moyen de contourner le problème. Il suffit de faire de sorte que le nom du fichier cliqué soit transmis en deuxième paramètre, et tout marche bien. C'est aussi simple que ça ! Et donc, mon petit programme Panoramic devient: - Code:
-
' test_right_click.bas dim f$ f$ = param_value$(2) message f$ terminate Et ensuite, il fait créer une clé de registre selon le modèle suivant: Il faut donc: 1. ouvrir Regedit 2. ouvrir la clé ]HKEY_CLASSES_ROOT] 3. ouvrir la clé ]*] (la première clé) 4. ouvrir la clé ]shell] 5. créer une nouvelle clé 6. lui donner comme nom le libellé de la ligne de menu contextuel à afficher, dans mon cas ]TesterClickDroit] 7. créer une nouvelle clé 8. lui donner comme nom ]Command] 9. double-cliquer sur "Valeur par défaut" dans la partie de droite 10 saisir la ligne de commande suivante dans le champ du bas: - Citation :
- "...chemin complet vers l'outil choisi...\test_right_click.exe" nul: "%1"
Ainsi, le "premier" paramètre pour l'explorer devient en réalité de "deuxième" paramètre pour le programme Panoramic, puisque "nul:" prend la place du premier paramètre et RIEN n'est exécuté. Et tout fonctionne comme par magie, pour tout type de fichier puisqu'un a choisi la clé de type "*" ! | |
|
| |
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Lun 31 Oct 2016 - 7:31 | |
| Bravo Klaus ! Je viens de tester et tout est OK. Je regarderais plus en détail ce soir. Comment as tu réussi à comprendre d’où cela venait ? J'avoue que là j'étais totalement dépassé. Tu est vraiment très fort. Encore un grand bravo ! - Citation :
- Je pense que ceci est un bug dans le code d'initialisation de Panoramic.
Il s’agirait donc bien d'un bug alors ! - Citation :
- Et tout fonctionne comme par magie, pour tout type de fichier puisqu'un a choisi la clé de type "*" !
Mais pourquoi cela ? Quel est l'intérêt puisque ce sont uniquement les fichiers BAS qui nous intéressent ! Je pense qu'il serait sympa de faire un post récapitulatif pour expliqué comment convertir un EXE sans ouvrir l'éditeur Panoramic. Ça peut faire aussi l'objet d'un petit article dans le MAG. Qu'en penses tu Klaus ? C'est quand même grâce à toi que cela fonctionne ! Si tu es d'accord je rédigerai tout ça... | |
|
| |
Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Lun 31 Oct 2016 - 8:20 | |
| - Citation :
- Mais pourquoi cela ? Quel est l'intérêt puisque ce sont uniquement les fichiers BAS qui nous intéressent !
Eh bien, dans ce cas, en phase (3), tu utilises: - Citation :
- ...
3. ouvrir (ou créer) lacle [.bas] ... ou toute autre extension que tu souhaites configurer. Je voulais simplement être le plus général possible. - Citation :
- Je pense qu'il serait sympa de faire un post récapitulatif pour expliqué comment convertir un EXE sans ouvrir l'éditeur Panoramic.
C'est une bonne idée. - Citation :
- Si tu es d'accord je rédigerai tout ça...
Evidemment que je suis d'accord ! Et pour finir: - Citation :
- Comment as tu réussi à comprendre d’où cela venait ?
Parce que j'ai horreur de rester bloqué devant un défi technique de cette sorte. J'ai passé des heures à faire des essais avec un programme Panoramic et un autre en Delphi, ce qui m'a permis de mettre en évidence la différence de fonctionnement au niveau de la prise en charge du lancement du programme. J'ai également essayé une bonne vingtaine de logiciels freeware destinés à gérer les menus contextuels de Windows? Aucun n'a pu résoudre ce problème pour Panoramic alors que ça marchaie bien pour Delphi. Et j'en ai conclu que Panoramic traite le premier paramètre de la commande DOS différemment de ce que font les autres programmes. Et j'ai essayé le paramètre 2 pour voir, et bingo ! | |
|
| |
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Lun 31 Oct 2016 - 9:34 | |
| Excellente déduction Sherlock ! Bon ok pour le post et le tuto. Là je suis au boulot donc je regarderai ce soir ou demain. A moins que se soit calme et que j'ai un peu de temps dans la journée... | |
|
| |
Yannick
Nombre de messages : 8610 Age : 52 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Lun 31 Oct 2016 - 9:47 | |
| La je vous réponds depuis un téléphone, c est vraiment pas pratique. J essaie des que mon squatteur me laisse la place. J ai aussi remarque une chose bizarre avec param_value mais je ferai un post avec mon ordi, la ce serait trop long. | |
|
| |
Yannick
Nombre de messages : 8610 Age : 52 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 31 Oct 2016 - 10:17 | |
| J' en ai marre de ce forum qui me déconnecte à chaque fois que je veux valider un post !!!!! Bon, je recommence ! Le programme que j' ai posté au dessus est censé récupéré en paramètre 1 le chemin du fichier qui lui est transmis et le passer à la moulinette de la fonction kgf pour en faire un excès. Ca c' est quand tout va bien... J' ai créé un fichier *.bas avec print param_value$(1). j' ai envoyé ce fichier au programme au dessus et là, surprise. Le programme a été exécuté et pas converti (mais apparemment le pb semble se résolver). A l' exécution de ce fichier *.bas, alors que lui, rien ne lui est passé en paramètre, print affiche sa propre adresse. Autre chose, chez moi il existe déjà une clé *.bas celle qui ouvre un fichier *.bas avec l' editeur. peut être y avait il un conflit... | |
|
| |
Yannick
Nombre de messages : 8610 Age : 52 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 31 Oct 2016 - 10:39 | |
| @Klaus, J' ai essayé ta formule magique. CA MARCHEEEE !!!!!!!!!!!... ou plutôt cela fonctionne. Mon petit programme fonctionne au poil même si je dois le revoir pour les #include Je vais pouvoir me remettre à mon prog que j' ai laissé de coté. | |
|
| |
pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Lun 31 Oct 2016 - 11:16 | |
| bjr a tous je vous redonne le lien du logiciel ici | |
|
| |
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Lun 31 Oct 2016 - 13:59 | |
| Merci Pascal10000 ! @ygeronimi : Moi aussi j'ai parfois des soucis avec le forum. On en parle regulièrement... Concernant l'astuce de Klaus, il faut bien indiqué PARAM_VALUE(2) dans ton programme Panoramic car si tu suis bien la démarche, avant il y a un paramétre NUL dans la ligne de commande dans REGEDIT. Concernant l'extention .BAS dans regedit, si elle existe et est au bon endroit, il suffit de rajouter les infos dans le dossier existant. Je vais faire un petit tuto pour tout çà et je vais ouvrir un post récapitulatif. | |
|
| |
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Mar 1 Nov 2016 - 14:56 | |
| Au secours Klaus plus rien ne fonctionne ! J'étais en train de préparer l'article et mettre en forme le programme. Je fais donc plusieurs tests du programme et patatra !!! voila tout d'abord le code que j'utilise : - Code:
-
CAPTION 0,"CONVERTISSEUR DE FICHIER EXE" : HIDE 0 MEMO 6 : LEFT 6,400 : TOP 6,300 : HIDE 6
DLL_ON "D:\BASIC\DLLs\KGF.dll"
DIM bas$ , exe$ , res%
bas$=PARAM_VALUE$(2)
MESSAGE bas$
FILE_LOAD 6,bas$
exe$=LEFT$(bas$,LEN(bas$)-3)+"EXE"
MESSAGE exe$
res%=DLL_CALL3("CompilePanoramicToEXE",adr(bas$),handle(6),adr(exe$))
END Voila le message d'erreur que j'ai après avoir vu mes 2 messages qui donnent un chemin correcte : et la base de registre : J'ai rebooter le PC a plusieurs reprises mais rien n'y fait. Je n'y comprends plus rien. | |
|
| |
Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Mar 1 Nov 2016 - 16:08 | |
| Déjà, premier point: la doc de ma nouvelle fonction dit bien qu'il est important de faire - Code:
-
bar_both N avec N étant le numaro du mémo. Sinon, le chargement du source donne n'mporte quoi, du fait des coupures de ligne intempestives. Ensuite, deuxième mesure: pour tester, ne cache pas le mémo et regarde bien ce que tu récupères après le file_load. Puis, troisième mesure: corriger le premier paramètre de la fonction ! En effet, tu n'en as pas compris le sens. Le premier paramètre donne le chemin et le nom d'un fichier EXE généré à partir d'un source Panoramic, et cet EXE sert de "source" pour copier l'interpréteur. Pour la facilité, et pour s'assurer d'avoir toujours la même version que celle du programme en train d'exécuter, on prend le programme lui-même. Et c'est - Code:
-
source$ = param_value$(0) qui donne cette information. Et finalement, est-ce que - Code:
-
MESSAGE exe$ fonctionne et affiche bien le bon chemin et nom du fichier EXE à créer ? Donc, pour moi, je modifierais ton code comme suit: - Code:
-
CAPTION 0,"CONVERTISSEUR DE FICHIER EXE" : HIDE 0 MEMO 6 : LEFT 6,400 : TOP 6,300 : HIDE 6
DLL_ON "D:\BASIC\DLLs\KGF.dll"
DIM bas$ , exe$ , res%, source$
source$=PARAM_VALUE$(0) bas$=PARAM_VALUE$(2)
MESSAGE bas$
FILE_LOAD 6,bas$
exe$=LEFT$(bas$,LEN(bas$)-3)+"EXE"
MESSAGE exe$
res%=DLL_CALL3("CompilePanoramicToEXE",adr(source$),handle(6),adr(exe$))
END | |
|
| |
Minibug
Nombre de messages : 4566 Age : 57 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Mar 1 Nov 2016 - 16:34 | |
| Ok Klaus c'est bon ! C'est cette histoire de source$ = param_value$(0) qui m'a perturbé. Je n'avais visiblement pas tout compris dans cette fonction. Je viens de regarder en détail sur la doc KGF et là effectivement c'est plus clair. Merci et bonne soirée. | |
|
| |
Klaus
Nombre de messages : 12274 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows Mar 1 Nov 2016 - 17:31 | |
| | |
|
| |
Contenu sponsorisé
| Sujet: Re: Récupérer nom fichier sur clic droit menu contextuel Windows | |
| |
|
| |
| Récupérer nom fichier sur clic droit menu contextuel Windows | |
|