Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Nom court et anti fenetre dos Dim 18 Juin 2017 - 14:56 | |
| Pourquoi si je fais ceci : - Code:
-
execute_wait "cmd /c for %I in ("+chr$(34)+f$+chr$(34)+") do echo.%~sI |clip" message clipboard_string_paste$ j' ai un résultat et correct et si je fais ceci : - Code:
-
sub ShortName(f$) dim_local a$ a$="cmd /c for %I in ("+chr$(34)+f$+chr$(34)+") do echo.%~sI |clip" Exec_Prog(a$) message clipboard_string_paste$ end_sub
sub Exec_Prog(prog$) DIM_LOCAL scr$, bat$, axp$ if dir_exists("c:\temp") <> 1 then dir_make "c:\temp" scr$ = "C:\temp\Vbscript.vbs": bat$ = "C:\temp\Bat.bat" ' Création du fichier .bat FILE_OPEN_WRITE F_OW%, bat$: FILE_WRITELN F_OW%, prog$: FILE_CLOSE F_OW% ' Création du script .vbs axp$ = "CreateObject("+CHR$(34)+"Wscript.Shell"+CHR$(34)+").Run " axp$ = axp$ + CHR$(34) + bat$ + CHR$(34) + ", 0, True" FILE_OPEN_WRITE F_OW%, scr$: FILE_WRITELN F_OW%, axp$: FILE_CLOSE F_OW% ' Exécution du script EXECUTE_WAIT "WSCRIPT.exe "+ scr$ FILE_DELETE bat$: FILE_DELETE scr$ end_sub le résultat est incorrect. | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 18 Juin 2017 - 19:11 | |
| Personne ne voit rien ?... | |
|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Nom court et anti fenetre dos Lun 19 Juin 2017 - 10:10 | |
| Moi j'ai windows XP, cette syntaxe n'est pas compatible sous cet OS. | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Nom court et anti fenetre dos Lun 19 Juin 2017 - 10:38 | |
| De mon coté, je ne fais pas le poids. Désolé de ne pouvoir t'aider, Yannick. A+ | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 19 Juin 2017 - 14:22 | |
| Je ne sais pas si cela ne vient pas du bug de Execute / Execute_wait. Je vais patienter pour laisser le temps à Jack de faire ce qu' il doit faire. Ce n' est pas grave, cela attendra, je vais essayer de bidouiller autre chose. | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Nom court et anti fenetre dos Lun 19 Juin 2017 - 16:07 | |
| En attendant, Yannick regarde ce code de Papydall, tu pourrais bien y trouver la solution de ton problème. Rectifies la ligne ligne 5, suivant ton besoin. - Code:
-
rem ============================================================================ rem Nom_Court Papydall rem ============================================================================ dim fcourt$ Nom_Court("C:\Users\Jean Claude\Desktop\DSC05026.JPG") : ' chemin à adapter message fcourt$ if fcourt$ <> "" then execute_wait fcourt$ end rem ============================================================================ SUB Nom_Court(f$) if file_exists(f$) > 0 execute_wait "cmd /c for %i in ("+chr$(34)+f$+chr$(34)+") do echo.%~sfi |clip" fcourt$ = clipboard_string_paste$ else message "Ce fichier n'existe pas!" + chr$(13)+"Vérifier votre chemin" END_IF END_SUB rem ============================================================================
| |
|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Nom court et anti fenetre dos Lun 19 Juin 2017 - 17:29 | |
| Un équivalent de 'exécute'(API windows) sans les pb associés: - Code:
-
' plus de détails, en anglais: ' https://msdn.microsoft.com/en-us/library/windows/desktop/bb762153%28v=vs.85%29.aspx
dir_change "C:" :' impose 'dir_current$' au répertoire racine, par exemple.
dim File_dir$, File$, Parameters_dir$, Parameters$, Directory$
' Directory$ = "C:\Program Files\Panoramic Editor V 0.9.25" ' ' par rapport à dir_current$ si Directory$ = "" File$ = "panoramic0927.exe" ' ' par rapport à dir_current$ si Directory$ = "" ' 'Parameter$' représente le(s) parametre(s) passé(s) à 'File$', ce n'est pas forcément un fichier Parameters$ = "sources\test.bas" CHECK_FILE_EXIST(Parameters$,Directory$) :' optionnel : comme dans cet exemple 'Parameters$' est un fichier, vérifier s'il existe
' lance un programme source RUN_FILE(File$,Parameters$,Directory$) ' émuler execute_wait' : TODO: trouver une méthode fiable pour récupérer le nom du processus dim k,process$ process$="panoramic v 0.9.27" while handle_form(process$)=0 : end_while :' attendre que le processus soit démarré while handle_form(process$)>0 : end_while :' attendre que le processus soit terminé ' ' vérifier que ça marche for k=1 to 60 caption 0,str$(k) pause 20 next k END
sub RUN_FILE(File$,Parameters$,Directory$) ' ' équivalent de EXECUTE en panoramic ' ' File$ : fichier éxécutable. Le fichier est recherché dans: 'Directory$'(si <>""), sinon 'dir_current$' ' Parameters$ : paramètre(s) à passer ' Directory$ : chemin par défaut ' if variable("shell32%")=0 ' commande : copie de mémoire dim kernel32% kernel32%=3 LIBRARY kernel32%,"kernel32" command "copy_memory","RtlMoveMemory",kernel32%,"III","stdcall" ' ex.: copy_memory adr(destination), adr(source), taille_en_octet%
' commande : shell dim shell32% shell32%=5 LIBRARY shell32%,"shell32" command "run","ShellExecuteA",shell32%,"IIIIII","stdcall" ' ex.: run hwnd%,adr(Operation$), adr(File$),adr(Parameters$), adr(Directory$), ShowCmd% end_if
' dim_local null% dim_local hwnd%,Operation$,ShowCmd% :' ,File$,Parameters$,Directory$ dim_local lp_Operation%,lp_File%,lp_Parameters%,lp_Directory% ' vérifier si File$ existe dim_local path$ if Directory$="" path$=dir_current$ else path$=Directory$ end_if if right$(trim$(path$),1)<>"" path$=path$ + "" end_if if file_exists(path$+File$)=0 message path$+File$+" pas trouvé!" end end_if ' hwnd%=0 Operation$="open" : copy_memory adr(lp_Operation%),adr(Operation$),4 ' File$="panoramic0927.exe" : copy_memory adr(lp_File%),adr(File$),4 ' Parameters$="test.bas" : copy_memory adr(lp_Parameters%),adr(Parameters$),4 ' Directory$="C:\Program Files\Panoramic Editor V 0.9.25" : copy_memory adr(lp_Directory%),adr(Directory$),4 ShowCmd%=10
run hwnd%,lp_Operation%,lp_File%,lp_Parameters%,lp_Directory%,ShowCmd% end_sub
sub CHECK_FILE_EXIST(File$,Directory$) dim_local path$ if Directory$="" path$=dir_current$ else path$=Directory$ end_if if right$(trim$(path$),1)<>"" path$=path$ + "" end_if if file_exists(path$+File$)=0 message path$+File$+" pas trouvé!" end end_if end_sub
Je pense qu'il doit y avoir la même chose dans KGF. Ne tient pas compte de la fin du code(à partir de émuler 'execute_wait'), c'est juste un essai pour moi. | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 19 Juin 2017 - 18:35 | |
| Merci les gars ! je vais regarder tout çà de près, de très près... En attendant, j' avais pris le parti d' un fichier temp boite aux lettres. Le programme appelant crée un fichier temp *.tmp du nom du programme appelé, ex : "C:\Temp\PanoColorSelect.tmp" pour PanoColorSelect.exe avant de lancer ce programme. Une fois lancé, le programme recherche ce fichier, récupère les paramètres puis le détruit. Et là je peux passer des milliers de paramètres sans souci. Le plus gros problème est l' histoire des noms courts en passant par cmd si je veux utiliser l' anti fenêtre dos celui ci utilise execute_wait avec passage de paramètres et là.... Alors vos idées viennent à point. | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 20 Juin 2017 - 12:03 | |
| J' ai testé ta formule Silverman. Elle fonctionne très bien. Par contre, et comme je suis un garcon qui ne manque pas de questions : Cette formule sera t elle valable sur Mac La formule de Papydallsera t elle aussi valable sur Mac Comment sont gérés les noms longs/noms courts sur Mac | |
|
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Nom court et anti fenetre dos Mar 20 Juin 2017 - 17:31 | |
| La sub fait appel à l'API windows, donc ça ne marchera pas sur d'autre OS | |
|
Contenu sponsorisé
| Sujet: Re: Nom court et anti fenetre dos | |
| |
|