Page 1 sur 1

Ouvrir avec... une application PB

Publié : dim. 15/mai/2005 11:48
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 ?

Publié : dim. 15/mai/2005 12:01
par julien
utilise la fonction ProgramParameter() qui te donne le chemin du fichier

Code : Tout sélectionner

Parametre$ = ProgramParameter()

Publié : dim. 15/mai/2005 12:01
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é :)

Publié : dim. 15/mai/2005 12:16
par ATHOW
Merci beaucoup pour la rapidité de vos réponses ! :)
Je vais tester ça tout de suite...

EDIT : Ca marche nickel, merci encore !

Publié : lun. 16/mai/2005 15:55
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

Publié : lun. 16/mai/2005 22:03
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 ?

Publié : lun. 16/mai/2005 22:16
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é)

Publié : mar. 17/mai/2005 17:40
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. :)

Publié : mar. 17/mai/2005 19:42
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...)

Publié : mar. 17/mai/2005 20:11
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).

Publié : mar. 17/mai/2005 20:53
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

Publié : mar. 17/mai/2005 22:05
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/

Publié : mer. 18/mai/2005 7:31
par ATHOW
OK, merci pour toutes vos réponses...