Page 1 sur 1

Drag & drop

Publié : dim. 01/juin/2025 18:47
par pasbel
Bonjour à toutes et à tous

Est-il possible d'exécuter une application en glissant un fichier dessus (sans pour autant bloquer le lancement manuel du logiciel) ?

Par exemple, glisser un fichier photo sur l'EXE ou un raccourci, pour en extraire les tags et les sauvegarder...

Re: Drag & drop

Publié : dim. 01/juin/2025 21:04
par Bruce33
Bonjour,
Bien sûr, c'est possible.
Si vous recherchez "Drag & Drop" dans l'aide de PureBasic vous trouverez la bibliothèque DragDrop... mais celle-ci permet de glisser-déposer des données entre applications déjà ouvertes or ce que vous souhaitez faire, il me semble, c'est juste démarrer l'application en glissant un fichier sur l'exécutable. En fait quand vous réalisez cela vous ajoutez le nom du fichier à la commande d'exécution du programme, mais c'est votre programme qui doit traiter cette information.
Vous avez besoin de la fonction ProgramParameter() pour lire les informations transmises lors du lancement par ligne de commande ou par glisser/déposer. Et il peut y avoir plusieurs paramètres. C'est donc à vous de définir un ordre des informations ou une syntaxe.
Si vous souhaitez juste récupérer un nom de fichier, on récupère tout simplement le premier paramètre et on vérifie quand même qu'il s'agit d'un fichier.
Par exemple au démarrage de votre programme :

Code : Tout sélectionner

Define LeFichier$
If CountProgramParameters() > 0
  LeFichier$ = ProgramParameter()
EndIf
If FileSize(LeFichier$) < 0
  Debug "Fichier en paramètre invalide"
  LeFichier$ = OpenFileRequester("Ouvrir un fichier", "" , "" , 0)
  If LeFichier$ = #Empty$
    Debug "Aucun fichier sélectionné... Pas de fichier, pas de programme !"
    End
  EndIf
EndIf

Re: Drag & drop

Publié : dim. 01/juin/2025 22:07
par pasbel
Merci pour l'info, je vais regarder ça.
Mon programme fonctionne bien en l'ouvrant, mais il est clair que glisser directement le type de fichier concerné serait plus facile pour l'utilisateur.
Encore merci et bonne soirée

Re: Drag & drop

Publié : mer. 04/juin/2025 13:23
par Maty
j’ajouterais qu’il peut être utile d’intégrer un petit contrôle au démarrage du programme pour gérer proprement les erreurs ou proposer une alternative si aucun fichier n’est passé. Par exemple :

Code : Tout sélectionner

If CountProgramParameters() > 0
  LeFichier$ = ProgramParameter()
  If FileSize(LeFichier$) >= 0
    ; Traitement du fichier ici
  Else
    MessageRequester("Erreur", "Le fichier transmis n'est pas valide.", #PB_MessageRequester_Ok)
  EndIf
Else
  ; Lancement standard du programme (ex. ouverture de la fenêtre principale)
EndIf

Re: Drag & drop

Publié : mer. 04/juin/2025 15:59
par pasbel
Merci.
Je n'ai pas eu le temps de m'y remettre, mais je voulais le faire comme lorsqu'on ouvre un fichier dans l'application, savoir si il existe, son extension,...