[Résolu] Ouvrir un exe avec le bon chemin...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

[Résolu] Ouvrir un exe avec le bon chemin...

Message par SPH »

Salut a tous, :)

j'ai besoin de votre savoir !
Mon logiciel de cryptage fait des fichiers ".mkey2"
J'ai donc dis a windows qu'il lance mon crypteur quand on double clic sur un fichier .mkey2
Ce que j'aimerais, c'est que mon crypteur s'ouvre sur le chemin du fichier double cliqué (ExplorerTreeGadget) !

Voici un code court qui peut etre considéré comme mon logiciel :

Code : Tout sélectionner

OpenWindow(0, 0, 0, 749, 515, "SPH", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

Global Repertoire$
calcul=0

ExplorerTreeGadget(1, 11, 73, 230, 280, Repertoire$, #PB_Explorer_NoFiles)
ExplorerListGadget(2, 247,73,490,280, "*.*", #PB_Explorer_NoFolders|#PB_Explorer_NoParentFolder)
SendMessage_(GadgetID(2),#LVM_SETCOLUMNWIDTH,0,188) ; largeur colonne
SendMessage_(GadgetID(2),#LVM_SETCOLUMNWIDTH,1,80) ; largeur colonne

FrameGadget(3, 11,  360, 726,33, "", #PB_Frame_Single)

;titre
TextGadget(4, 20, 370,90,20,"Password :")
;password
StringGadget(5, 80,  366, 570, 20, ""  )

;invisible
ButtonGadget(6, 656,  366, 30, 20, "Hide", #PB_Button_Toggle)


;cls
ButtonGadget(7, 693,  366, 40, 20, "Clear")

Procedure Afficher_fichiers()
  SetGadgetText(2, "")                    ; Vider la liste des fichiers
  Repertoire$ = GetGadgetText(1)          ; Voir quel est le répertoire sélectionné
  SetGadgetText(2, Repertoire$)           ; Remplir la liste avec le répertoire
EndProcedure

BindGadgetEvent(1, @Afficher_fichiers(), #PB_EventType_Change) ; #PB_EventType_LeftClick) 


Repeat
  Evenement = WindowEvent()
  If Evenement = #PB_Event_Gadget
    If EventGadget()=6 ; hide button
      If GetGadgetState(6)=1         
        StringGadget(5, 80,  366, 570, 20, GetGadgetText(5),#PB_String_Password)
      Else
        StringGadget(5, 80,  366, 570, 20, GetGadgetText(5))
      EndIf
      
      
    EndIf
    
   
    window_event = WaitWindowEvent(5) ;changing the progressbar's will always cause this to catch an event
    While window_event <> 0
      If window_event = #PB_Event_CloseWindow : Break 2: EndIf
      window_event = WindowEvent()
    Wend
   
  EndIf
Delay(5)
Until Evenement = #PB_Event_CloseWindow
End

;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;
Thx a lot 8)
Dernière modification par SPH le jeu. 15/août/2019 21:07, modifié 1 fois.

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Ouvrir un exe (.pb compilé) avec le bon chemin...

Message par Ar-S »

Bonne question.

Si le fait de double cliqué sur un .mkey2 lance ton soft, il faudrait voir si il se comporte comme un fichier glisser/déposer. à ce compte là ce serait simple.
Je ne peux pas faire le test de suite car ce soir c'est tapas au village.

J'ai pris cette base :
Le glissé déposé affiche le bon endroit.
Ajoute juste le "ouvrir avec" sous windows et tu seras fixé.

Code : Tout sélectionner

Global PAthFile$

Enumeration
  #WIN
   #BTexit
  #tree
EndEnumeration

Procedure OpenWindow_WIN()
  OpenWindow(#WIN, 489, 566, 371, 73, "AES PROTECTOR // LDV MULTIMEDIA "+V$, #PB_Window_TitleBar)
  ButtonGadget(#BTexit,349,0,20,36,"x",#BS_FLAT)
  EnableWindowDrop(#WIN,#PB_Drop_Files,#PB_Drag_Copy)
  SetWindowColor(#WIN,$0)
EndProcedure


Procedure DropOn()

  PathFile$ = ""
     If FileSize(EventDropFiles())>0
      PathFile$ = EventDropFiles()
     ExplorerTreeGadget(#tree, 1, 1, 350, 90, GetPathPart(PAthFile$), #PB_Explorer_NoFiles)
    EndIf 
  
  Debug "fichier "+pathfile$

EndProcedure


; --------------------------------
;- /// PROGRAMME ///
; --------------------------------

OpenWindow_WIN()


Repeat
  Select WaitWindowEvent()
    Case #PB_Event_WindowDrop  
      
      DropOn()
      
    Case #PB_Event_Gadget
      Select EventGadget()
          
        Case #BTexit
          exit = 1

      EndSelect
      
  EndSelect
Until exit = 1

End

~~~~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
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Ouvrir un exe (.pb compilé) avec le bon chemin...

Message par Marc56 »

Si tu cliques sur un fichier associé à un programme, alors le fichier cliqué est identifié comme le premier paramètre du programme.
Tu le récupère avec son chemin complet par ProgramParameter(0)
(Idem que s'il était droppé sur l'icône, ou passé en ligne de commande)
Avec PB 0 est le premier paramètre contrairement à d'autres systèmes ou 0 est le programme ou parfois la ligne complète.

Il suffit ensuite d'extraire le path et de redéfinir les deux gadgets

Code : Tout sélectionner

SetGadgetText(1, GetPathPart( ProgramParameter( 0 ) ) )
:wink:
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Ouvrir un exe (.pb compilé) avec le bon chemin...

Message par SPH »

Si le fait de double cliqué sur un .mkey2 lance ton soft, il faudrait voir si il se comporte comme un fichier glisser/déposer. à ce compte là ce serait simple.
Comme mon logiciel est supposé "fermé" au double cliquage, il ne peux se comporter comme un cliquer-glisser (helas)
Je ne peux pas faire le test de suite car ce soir c'est tapas au village.
:mrgreen:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Ouvrir un exe (.pb compilé) avec le bon chemin...

Message par Ollivier »

Je confirme la proposition de Marc56.

La chaîne retournée par ProgramParameter(0) est l'une de celles stockées dans l'IDE :

1) Menu "Compilateur"
2) Item "Options du compilateur"
3) Onglet "Compiler/Exécuter"(*)
4) Conteneur "Options de lancement"
5) Champs "Paramètres de l'exécutable"

Et compiler ça :

Code : Tout sélectionner

MessageRequester("Info", ProgramParameter(0) )
Ça affichera le chemin, le nom et l'extension du fichier cliqué et exécuté sous Windows (sous Linux, je l'ignore).
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Ouvrir un exe (.pb compilé) avec le bon chemin...

Message par Marc56 »

Comme mon logiciel est supposé "fermé" au double cliquage, il ne peux se comporter comme un cliquer-glisser (helas)
En fait, si.
Que tu double-clique sur ton .mkey2 ou que tu drag un fichier .mkey2 sur l'icone de l'EXE, c'est pareil.

Le programme EXE s'ouvre et reçoit le fichier de données en paramètre 0

:wink:
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Ouvrir un exe (.pb compilé) avec le bon chemin...

Message par SPH »

Ollivier a écrit :Je confirme la proposition de Marc56.

La chaîne retournée par ProgramParameter(0) est l'une de celles stockées dans l'IDE :

1) Menu "Compilateur"
2) Item "Options du compilateur"
3) Onglet "Compiler/Exécuter"(*)
4) Conteneur "Options de lancement"
5) Champs "Paramètres de l'exécutable"

Et compiler ça :

Code : Tout sélectionner

MessageRequester("Info", ProgramParameter(0) )
Ça affichera le chemin, le nom et l'extension du fichier cliqué et exécuté sous Windows (sous Linux, je l'ignore).
HO LA VAAAAACHE !!!!!! CA MAAAAARCHE !!!!!!

Je suis trop content !
Mais où as tu déniché cette technique :?: 8O 8O 8O

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [Résolu] Ouvrir un exe avec le bon chemin...

Message par Ar-S »

Code : Tout sélectionner

ProgramParameter( 0 )
Excellent :!:
Décidément je (re)découvre toujours des trucs avec PB.. :P C'est parfait !
~~~~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
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: [Résolu] Ouvrir un exe avec le bon chemin...

Message par Ollivier »

SPH a écrit :Je suis trop content !
Mais où as tu déniché cette technique ?
Simple : j'ai grugé sur le message de Marc56. C'est une technique qui a pratiquement 40 années et que Marc connaît avec plus d'expérience. Merci à lui pour ce rappel (je pensais que c'était une constante...).
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Ouvrir un exe (.pb compilé) avec le bon chemin...

Message par SPH »

Ollivier a écrit :1) Menu "Compilateur"
2) Item "Options du compilateur"
3) Onglet "Compiler/Exécuter"(*)
4) Conteneur "Options de lancement"
5) Champs "Paramètres de l'exécutable"
On y mets quoi dans le champs ? :?:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: [Résolu] Ouvrir un exe avec le bon chemin...

Message par Marc56 »

On y mets quoi dans le champs ?
Le(s) paramètre(s) que tu veux passer à l’exécutable quand tu compile dans l'IDE.

ex: c:\tmp\test.mkey2
(chemin complet)

Ainsi, plus besoin de compiler en EXE et sortir de l'IDE pour tester un programme demandant des paramètres.

Les paramètres que tu mets (donc au besoin des fichiers) sont les même que ceux que recevrait le programme si tu le lançait en ligne de commande ou si tu faisais un dnd de fichier sur l'icône.

À noter que même sans associer de fichier, si tu créé un raccourci de ton programme sur le bureau et que tu y fais un dnd d'un fichier .mkey2, cela aura le même effet: ProgramParameter(0) aura le premier fichier. Valable aussi pour plusieurs fichiers: ProgramParameter(0) 1 2 3
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: [Résolu] Ouvrir un exe avec le bon chemin...

Message par SPH »

Marc56 a écrit :
On y mets quoi dans le champs ?
Le(s) paramètre(s) que tu veux passer à l’exécutable quand tu compile dans l'IDE.
Non, je dis ca parce qu'en ne mettant rien, ca marche quand meme !! :?
Normal ? :?:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: [Résolu] Ouvrir un exe avec le bon chemin...

Message par Ollivier »

Pour être certain que plusieurs paramètres puissent passer, je crois qu'il y a un standard syntaxique (au moins) sous windows :

Code : Tout sélectionner

"param1" "param2" "param3" etc...
Le mécanisme est assez similaire à l'interaction utilisateur/interpréteur :

On fournit manuellement des chaînes balisées par des guillemets et, la fonction ProgramParameter(Index) rend la chaîne pointée par l'index, à l'intérieur des balises.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: [Résolu] Ouvrir un exe avec le bon chemin...

Message par Marc56 »

Non, je dis ca parce qu'en ne mettant rien, ca marche quand meme !! :?
Normal ? :?:
Cette option de l'IDE prend toute la ligne même vide. Le contenu est à traiter par le programmeur.
Les guillemets servent à empêcher la découpe pour les paramètre avec espaces (ie: Program Files)
Si la ligne est vide, l'IDE considère = ""

PS. Dans ProgramParameter(0) le zéro est facultatif, la réponse de Derren était donc aussi juste.
https://www.purebasic.fr/english/viewto ... 38#p540538
Répondre