Ouvrir avec... une application PB

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
ATHOW
Messages : 226
Inscription : mer. 29/déc./2004 16:54

Ouvrir avec... une application PB

Message par ATHOW »

Bonjour à tous,

Voila, je viens de terminer mon premier prog en Pure : un petit logiciel de retouche d'image (avec la possibilité de modifier la luminosité, le contraste, de poser un filtre et de convertir l'image en niveau de gris).

L'ouverture des fichiers se passe par un OpenFileRequester(), mais j'aimerais également pouvoir ouvrir directement l'image avec l'exe, en faisant clique-droit->ouvrir avec....
Actuellement, si je fais ça, cela lance l'application, mais cela ne charge pas l'image...

Alors, comment faire ?
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

utilise la fonction ProgramParameter() qui te donne le chemin du fichier

Code : Tout sélectionner

Parametre$ = ProgramParameter()
Pingtix
Messages : 159
Inscription : mer. 03/nov./2004 15:30

Message par Pingtix »

Quand tu fais ouvrir avec ou envoyer vers, windows passe le chemin de l'image en parametre.
Tu le récuperes avec ProgramParameter()

EDIT: Grillé :)
ATHOW
Messages : 226
Inscription : mer. 29/déc./2004 16:54

Message par ATHOW »

Merci beaucoup pour la rapidité de vos réponses ! :)
Je vais tester ça tout de suite...

EDIT : Ca marche nickel, merci encore !
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

attention avec programparameter à bien tout lire car si il y a un espace dans le nom de fichier ... :wink:

moi, je fais cmme ça si ça peux aider

Code : Tout sélectionner

Parametre2.s = LCase(ProgramParameter())
If Parametre2 <> ""
  
  Parametre.s = ""
  While Parametre2 <> ""
    Parametre = Parametre + " " + Parametre2
    Parametre2.s = LCase(ProgramParameter())
  Wend
  Parametre = Trim(Parametre)
  
  MessageRequester("", Parametre, 0)
EndIf
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
ATHOW
Messages : 226
Inscription : mer. 29/déc./2004 16:54

Message par ATHOW »

Pour moi, ça marche très bien même quand il y a des espaces dans le nom de fichier...

Normalement, PB considère ça comme deux (ou plusieurs) paramètres ?
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

Régis a raison il faut faire attention aux espace qui sont considéré comme le prochain paramètre; mais à confirmer car je n'ai pas essayé cette commande dpuis un petit moment, mais le mieux est de toujours vérifier qu'il ne reste plus rien en paramètre (quand la chaine nul est renvoyé)
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Un paramètre peut contenir des espaces s'il est entre guillemets.

Code : Tout sélectionner

premier_paramètre "deuxième paramètre" troisème_paramètre
donnera 3 paramètres.

Et Windows met le nom du fichier à ouvrir entre guillemets, donc pas de soucis. :)
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
ATHOW
Messages : 226
Inscription : mer. 29/déc./2004 16:54

Message par ATHOW »

OK... c'est pour ça que ça marche bien chez moi.... :D
Par contre, LSI, je ne comprends pas pourquoi tu mets chaque paramètre en minuscule :

Code : Tout sélectionner

Parametre2.s = LCase(ProgramParameter()) 
Quel est le problème avec les majuscules ?
(je sais je pose plein de questions...)
Fred
Site Admin
Messages : 2805
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Il n'y a pas de probleme avec les majuscules, mais peut-etre la suite du programme en necessite (pour les tests d'options par exemple).
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Je pense que c'est ça que tu cherche :

Code : Tout sélectionner

;--  OTHER Functions !!

Procedure AssociateFileEx(ext$,ext_description$,programm$,icon$,prgkey$,cmd_description$,cmd_key$) 
  cmd$=Chr(34)+programm$+Chr(34)+" "+Chr(34)+"%1"+Chr(34) 
  If GetVersion_() & $FF0000 ; Windows NT/XP 
    RegCreateKeyValue(#HKEY_CLASSES_ROOT, "Applications\"+prgkey$+"\shell\"+cmd_description$+"\command","",cmd$,#REG_SZ,"") 
    If ext_description$ 
      Key$=ext$+"_auto_file" 
      RegCreateKeyValue(#HKEY_CLASSES_ROOT  ,"."+ext$           ,"",Key$            ,#REG_SZ,"") 
      RegCreateKeyValue(#HKEY_CLASSES_ROOT  ,Key$               ,"",ext_description$,#REG_SZ,"") 
      If icon$ 
        RegCreateKeyValue(#HKEY_CLASSES_ROOT,Key$+"\DefaultIcon","",icon$           ,#REG_SZ,"") 
      EndIf 
    EndIf 
    RegCreateKeyValue(#HKEY_CURRENT_USER,"Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."+ext$,"Application",prgkey$,#REG_SZ,"") 
  Else ;Windows 9x 
    RegCreateKeyValue(#HKEY_LOCAL_MACHINE  ,"Software\Classes\."+ext$                     ,"",prgkey$         ,#REG_SZ,"") 
    If ext_description$ 
      RegCreateKeyValue(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$                   ,"",ext_description$,#REG_SZ,"") 
    EndIf 
    If icon$ 
      RegCreateKeyValue(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$+"\DefaultIcon"    ,"",icon$           ,#REG_SZ,"") 
    EndIf 
    If cmd_description$<>cmd_key$ 
      RegCreateKeyValue(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$+"\shell\"+cmd_key$,"",cmd_description$,#REG_SZ,"") 
    EndIf 
    RegCreateKeyValue(#HKEY_LOCAL_MACHINE  ,"Software\Classes\"+prgkey$+"\shell\"+cmd_key$+"\command","",cmd$,#REG_SZ,"") 
  EndIf 
EndProcedure 

Procedure RemoveAssociateFile(ext$,prgkey$) 
  If GetVersion_() & $FF0000 ; Windows NT/XP 
    RegDeleteKeyWithAllSub(#HKEY_CLASSES_ROOT,"Applications\"+prgkey$,"") 
    Key$=ext$+"_auto_file" 
    RegDeleteKeyWithAllSub(#HKEY_CLASSES_ROOT,"."+ext$,"") 
    RegDeleteKeyWithAllSub(#HKEY_CLASSES_ROOT,Key$,"") 
    RegDeleteKeyWithAllSub(#HKEY_CURRENT_USER,"Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."+ext$,"") 
  Else ;Windows 9x 
    RegDeleteKeyWithAllSub(#HKEY_LOCAL_MACHINE  ,"Software\Classes\."+ext$,"") 
    RegDeleteKeyWithAllSub(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$,"") 
  EndIf 
EndProcedure 

Procedure AssociateFile(ext$,ext_description$,programm$,icon$) 
  AssociateFileEx(ext$,ext_description$,programm$,icon$,GetFilePart(programm$),"open","open") 
EndProcedure 
Le code n'est pas de moi, mais je pense l'adapter pour ma lib
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Quel est le problème avec les majuscules ?
c'est comme Fred la dit, c'est pour ne pas avoir de problème de différence entre minuscule et majuscule lors de la lecture des options ;)

comme en général, j'ai des actions de ce type
p/nom de fichier
par exemple, je peux mettre p/ ou P/
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
ATHOW
Messages : 226
Inscription : mer. 29/déc./2004 16:54

Message par ATHOW »

OK, merci pour toutes vos réponses...
Répondre