FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Panoramic et ses curiosités
par Klaus Aujourd'hui à 2:20

» Synedit Parameters
par Klaus Aujourd'hui à 1:33

» Utilitaire de suppression de fichiers
par Yannick Hier à 23:03

» Code à vérifier SVP (Oups ! résolu)
par Jean Claude Jeu 22 Juin 2017 - 21:16

» Compilateur FBPano
par jean_debord Jeu 22 Juin 2017 - 9:56

» Bienvenue à Virtualalan !
par UltraVox Jeu 22 Juin 2017 - 9:18

» Concours de Morpions
par jjn4 Jeu 22 Juin 2017 - 0:04

» ShortName$(F) [Cloturé]
par papydall Mer 21 Juin 2017 - 16:19

» Remplacer espace par tiret dans noms des dossiers / fichiers
par papydall Mer 21 Juin 2017 - 15:27

» Menu personalisé avec icones et menu contextuel
par Laurent (Minibug) Mer 21 Juin 2017 - 12:44

» La liste des choses à faire ...
par Jack Mar 20 Juin 2017 - 22:49

» Quoi de neuf à propos de Goric 3D ? (@Jack)
par UltraVox Mar 20 Juin 2017 - 21:06

» Nom court et anti fenetre dos
par silverman Mar 20 Juin 2017 - 18:31

» Ludothèque Panoramic
par jjn4 Mar 20 Juin 2017 - 18:09

» Proposition à la communauté
par Yannick Mar 20 Juin 2017 - 15:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2017
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
2627282930  
CalendrierCalendrier

Partagez | 
 

 Nom court et anti fenetre dos

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Yannick

avatar

Nombre de messages : 7825
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: Nom court et anti fenetre dos   Dim 18 Juin 2017 - 15: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.
scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7825
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 18 Juin 2017 - 20:11

Personne ne voit rien ?...
Sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 444
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Nom court et anti fenetre dos   Lun 19 Juin 2017 - 11:10

Moi j'ai windows XP, cette syntaxe n'est pas compatible sous cet OS.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4933
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Nom court et anti fenetre dos   Lun 19 Juin 2017 - 11:38

De mon coté, je ne fais pas le poids. Sad
Désolé de ne pouvoir t'aider, Yannick.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7825
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 19 Juin 2017 - 15: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.
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4933
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Nom court et anti fenetre dos   Lun 19 Juin 2017 - 17: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 ============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 444
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Nom court et anti fenetre dos   Lun 19 Juin 2017 - 18: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7825
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 19 Juin 2017 - 19:35

Merci les gars !
je vais regarder tout çà de près, de très près... study

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à....
affraid

Alors vos idées viennent à point. Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7825
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 20 Juin 2017 - 13:03

J' ai testé ta formule Silverman.
Elle fonctionne très bien.
cheers

Par contre, et comme je suis un garcon qui ne manque pas de questions :
Cette formule sera t elle valable sur Mac  scratch
La formule de Papydallsera t elle aussi valable sur Mac  scratch
Comment sont gérés les noms longs/noms courts sur Mac  scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 444
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Nom court et anti fenetre dos   Mar 20 Juin 2017 - 18:31

La sub fait appel à l'API windows, donc ça ne marchera pas sur d'autre OS
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Nom court et anti fenetre dos   

Revenir en haut Aller en bas
 
Nom court et anti fenetre dos
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Promo : Mamutu (anti-malware) gratuit !
» depart dans le sens anti horaire
» probleme avec rafraichissement fenetre mtasc
» fenêtres publicitaires
» Test anti-trojans en ligne

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: A l'aide!-
Sauter vers: