la fonction Copy de windows... ?

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

La syntaxe pour que cmd execute quelque chose est "cmd /c blabla".

Pour le faire avec pb, tu utilises OpenFileRequester() pour sélectionner tes fichiers (regarde l'aide), tu charges tes deux fichiers source avec readdata() et allocmem(), et tu les balances dans un fichier en sortie avec writedata().

Facile, non?

Tu ne peux pas le faire avec include puisque ce dernier sert à intégrer un fichier dans ton exécutable; pas à le charger dynamiquement lors de l'exécution. Faut pas tout mélanger!
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Comme je l'ai dit plus haut,

Code : Tout sélectionner

parametres$="copy /B "+Chr(34)+image$+Chr(34)+" + "+Chr(34)+archive$+Chr(34)+" "+FichierSortie$
prg=RunProgram(copy$,parametres$,"",#PB_Program_Open) ; ,#PB_Program_Hide
    If prg
                  ; MessageRequester("OK","ça marche"+Chr(10)+copy$+" "+parametres$)
                  SetClipboardText(copy$+" "+parametres$)
    endif 


Doit fonctionner mais ça ne marche pas !
tu charges tes deux fichiers source avec readdata() et allocmem(), et tu les balances dans un fichier en sortie avec writedata().
Je vais tenter de faire comme ça merci.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

djes a écrit :La syntaxe pour que cmd execute quelque chose est "cmd /c blabla".
ce serai bien que tu prenne le temps de lire les posts avant de répondre :?

voici ce que j'ai ecris un poil plus haut

Dobro a écrit :oui c'est bizarre !!

ceci apparemment fonctionne , mais aucune copie n'est effectué ! 8O

Code : Tout sélectionner

prg=RunProgram("cmd.exe", "?/c copy "+Chr(34)+"d:\PureBasic\ readme.txt  d:\PureBasic\dobro\toto.txt"+Chr(34)+" /V", "", #PB_Program_Open|#PB_Program_Read)

If prg
  While ProgramRunning(prg)
    Debug ReadProgramString(prg)
  Wend
EndIf
CloseProgram(prg)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

J'ai bien lu ton message dobro, sauf que si tu ecris
ceci apparemment fonctionne , mais aucune copie n'est effectué !
Le "mais" laisse entendre que c'est censé fonctionner mais que ça ne fonctionne pas !
Je ré-essayerai en rentrant du taf.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Ar-S a écrit :J'ai bien lu ton message dobro, sauf que si tu ecris
ceci apparemment fonctionne , mais aucune copie n'est effectué !
Le "mais" laisse entendre que c'est censé fonctionner mais que ça ne fonctionne pas !
Je ré-essayerai en rentrant du taf.
Note que je cite Djes , c'est donc a lui que je m'adressais !! :)
(reveillez vous les gars !! :lol: )

oui je dit bien que cela devrai fonctionner , mais que cela ne fonctionne pas !! :D
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Le code suivant fonctionne très bien :

Code : Tout sélectionner

image$="c:\test1.txt"
archive$="c:\test2.txt"
RunProgram("cmd"," /c dir c:\ >"+image$,"",#PB_Program_Wait)
RunProgram("cmd"," /c dir c:\ /d >"+archive$,"",#PB_Program_Wait)


fichiersortie$="c:\test3.txt"
parametres$=" copy /B "+Chr(34)+image$+Chr(34)+"+"+Chr(34)+archive$+Chr(34)+" "+fichiersortie$
prg=RunProgram("cmd"," /c "+parametres$,"",#PB_Program_Open) ; ,#PB_Program_Hide
If prg
              ; MessageRequester("OK","ça marche"+Chr(10)+copy$+" "+parametres$)
              SetClipboardText(copy$+" "+parametres$)
EndIf
Ar-S> Juste quelques remarques : mets les codes complets quand tu postes, sinon comment veux-tu qu'on teste dans les mêmes conditions? De même, sois plus attentif à la syntaxe; en programmation, un espace en trop, une virgule en moins, et rien ne fonctionne.

Dobro> Moi je m'adressais à tout le monde... Quand j'ai vu le "?" dans ton code, j'ai crû que tu avais mal compris ce que j'avais dit. :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

ah la communication ! le mal du siècle !
En tout cas merci les gars pour votre aide.

J'essayerai ton code ce soir Djes, là je file faire mon Maso chez l'arracheur de dents

Image
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

De retour,

Après quelques essayes, je ni arrive toujours pas, j'enrage.

Voilà le code complet, j'ai fait en sorte de copier les fichiers dans c:\ histoire de voir si cela venait d'une histoire de chemin "long" mais même pas..

Code : Tout sélectionner

;Cache Cache by LDV MULTIMEDIA

Enumeration
  #WIN
  #BT_GO
  #AFFICHE
EndEnumeration
;}

Global path$=GetCurrentDirectory()
Global An$="Annulé par l'utilisateur"

Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_WIN()
  If OpenWindow(#WIN, 192, 650, 206, 87, "Cache Cache", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_SizeGadget)
    If CreateGadgetList(WindowID(#WIN))
      ButtonGadget(#BT_GO, 0, 5, 205, 60, "Cacher une archive dans une image")
      StringGadget(#AFFICHE, 1, 68, 204, 19, "By LDVMULTIMEDIA", #PB_String_BorderLess|#ES_CENTER)
      ; Gadget Colors
      PureCOLOR_SetButtonColor(#BT_GO, $68FF5B, $0)
    EndIf
  EndIf
EndProcedure

OpenWindow_WIN()

;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      Select EventGadget
        Case #BT_GO
          SetGadgetText(#AFFICHE,"~ Patientez S.V.P ~")
          Delay(100)
          ImgFiltre$="Fichier Image ou Audio|*.bmp;*.jpg;*.gif;*.tif;*.png;*.mp3;*.wav;*.ogg;*.mpc;*.aiff;*.rm" 
          ArchiveFiltre$="Fichier Archivé (rar,zip,ace,7z,kgb)|*.rar;*.zip;*.ace;*.kgb;*.7z"
          filtre=0
          fichierpardefaut$=path$
          image$=OpenFileRequester("Choisissez le fichier multimedia",fichierpardefaut$, ImgFiltre$, filtre)
          If image$
            ext$=GetExtensionPart(image$)
            
            archive$=OpenFileRequester("Choisissez l'archive à cachée",fichierpardefaut$, ArchiveFiltre$, filtre)
            If archive$
              SortieFiltre$="Fichier (*."+ext$+")|*."+ext$
              FichierSortie$=SaveFileRequester("Nom du nouveau fichier",fichierpardefaut$, SortieFiltre$, filtre)
              If FichierSortie$
                ArchiveName$=GetFilePart(archive$)
                ImageName$=GetFilePart(image$)
                archiveTemp$="c:\"+ArchiveName$
                imageTemp$="c:\"+ImageName$
                CopyFile(image$,imageTemp$)
                CopyFile(archive$,archiveTemp$)
                
                FichierSortie$=Chr(34)+FichierSortie$+"."+ext$+Chr(34)
                parametres$="copy /B "+Chr(34)+imageTemp$+Chr(34)+" + "+Chr(34)+archiveTemp$+Chr(34)+" "+FichierSortie$
                prg=RunProgram("cmd.exe",parametres$,"",#PB_Program_Open) ; 
                If prg
                  MessageRequester("OK","Parametres : "+Chr(10)+copy$+" "+parametres$)
                  SetClipboardText(copy$+" "+parametres$)
                  SetGadgetText(#AFFICHE,"Terminé")
                  DeleteFile(imageTemp$)          ;
                  DeleteFile(archiveTemp$)        ; suppression des copies des fichiers temporaires
                Else
                  MessageRequester("No","ça chie")
                 EndIf
                CloseProgram(prg)
                 ;MessageRequester("Succés","Le fichier camouflé est : "+FichierSortie$+Chr(10)+"Il est complètement fonctionnel (écoutable, visible...)"+Chr(10)+"Pour ouvrir l'archive camoufflée, il vous suffit d'ouvrir votre fichier avec votre archiveur")
              Else
                MessageRequester ("Annulé",An$)
                EndIf
              
            Else
              MessageRequester ("Annulé",An$)
            EndIf
            
          Else
            MessageRequester ("Annulé",An$)
          EndIf
          
          
        Case #AFFICHE
      EndSelect
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      Select EventWindow
        Case #WIN

          CloseWindow(#WIN)
          Break
      EndSelect
  EndSelect
ForEver
;
;}

Ainsi vous pourrez tester avec les fichiers adéquate.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

A 1ère vue tu as oublié un espace entre cmd et parametres$...
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Oh, j'hallucine, ça venait bien de ça !

Je ne comprends pas pourquoi l'espace n'est pas automatique !
Ce n'est pas logique, du moment ou l'on appel un programme et qu'on lui attribut des paramètres, l'espace entre les 2 est toujours indispensable.
Vu que la fonction RunProgram contient ces 2 attributs, je trouvais donc logique qu'un espace les séparait.

En tout cas merci, du coup ça fonctionne.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre