Drag & drop

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pasbel
Messages : 38
Inscription : mer. 10/avr./2019 17:36

Drag & drop

Message 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...
Bruce33
Messages : 6
Inscription : dim. 10/sept./2023 14:02

Re: Drag & drop

Message 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
pasbel
Messages : 38
Inscription : mer. 10/avr./2019 17:36

Re: Drag & drop

Message 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
Maty
Messages : 3
Inscription : mer. 04/juin/2025 11:46

Re: Drag & drop

Message 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
pasbel
Messages : 38
Inscription : mer. 10/avr./2019 17:36

Re: Drag & drop

Message 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,...
Répondre