Page 1 sur 1

lancer le programme de messagerie par défaut

Publié : jeu. 01/juil./2004 21:08
par julien
Quelqu'un sait comment lancer le programme de messagerie par défaut, mais sans lancer un nouvel email ?

Thx!

Publié : dim. 04/juil./2004 16:36
par Jacobus
:) Salut,

Je ne sais pas si cela t'aidera vraiment
mais je procède ainsi pour lancer Outlook Express
qui est mon log de messagerie par défaut (comme pour beaucoup):

Code : Tout sélectionner

;Dans la boucle du Repeat

Case #Bouton_messagerie
    
   If RunProgram("c:\Program Files\Outlook Express\msimn.exe")
   Else 
    MessageRequester("No Détection","Aucun logiciel de messagerie détecté")
    EndIf
Ca marche pour qui possède Outlook
Sinon faire un listing de choix avec Else If pour détecter le bon.
Inconvénient: Il faut connaître les logiciels les plus utilisés
pour les inclure dans la liste.

@ + Jacobus

Publié : dim. 04/juil./2004 18:07
par julien
C'est bon j'ai trouvé :D

Publié : dim. 04/juil./2004 18:14
par Chris
Peut-être une réponse.

J'ai ça sous XP. Donc, il faut d'abord savoir si c'est pareil sous les autres OS

Dans la base de registre, dans HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail, la valeur par défaut te donne le nom du client mail par défaut.

Au même endroit, il y a un dossier avec le nom donné plus haut. Tu l'ouvres, et il y a le chemin du client.

Je t'aurais bien donné un bout de code pour ça, mais je ne sais pas trop manipuler la base de registre avec les commandes de l'Api, et comme PureBasic n'a pas l'air de savoir faire ça tout seul...

Chris :)

Publié : dim. 04/juil./2004 18:23
par julien
Merci chris, j'ai trouvé les même infos sur vbfrance.com

Voici le code qui permet donc de trouver le chemin de la messagerie par défaut (avec le nom)

Mais la j'ai un autre problème, je n'arrive pas à lancer le programme malgré que j'ai le chemin
code


Code : Tout sélectionner

Procedure.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s)
  hKey.l=0
  keyvalue.s=Space(255)
  datasize.l=255
  
  If RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey)
    keyvalue="0"
    Else 
    If RegQueryValueEx_(hKey,ValueName,0,0,@keyvalue,@datasize)
      keyvalue="0"
      Else  
      keyvalue=Left(keyvalue,datasize-1)
    EndIf
    RegCloseKey_(hKey)
  EndIf
   
  ProcedureReturn keyvalue
EndProcedure  





programme$=ReadRegKey(#HKEY_LOCAL_MACHINE,"Software\Clients\Mail\"+ReadRegKey(#HKEY_LOCAL_MACHINE,"Software\Clients\Mail","")+"\shell\open\command","")

RunProgram(programme$,"","",0)

MessageRequester("Messagerie par défaut",programme$,0) 

Publié : dim. 04/juil./2004 18:29
par Chris
Je crois que PB ne prends pas en charge les % dans un chemin de fichier.

Essaye en faisant

Code : Tout sélectionner

RunProgram(GetFilePart(programme$),"","",0)
Chris :)

Publié : dim. 04/juil./2004 18:31
par julien
ça ne marche pas ...

Publié : dim. 04/juil./2004 18:43
par Chris
Moi, ça fonctionne avec Outlook et Mozilla, mais pas avec HotMail, ou tout ce qui fonctionne avec RunDll.

Chris :)

Publié : dim. 04/juil./2004 18:50
par Le Soldat Inconnu
et comme ça ;)

Code : Tout sélectionner

Procedure.s ReadRegKey(OpenKey.l, SubKey.s, ValueName.s)
  hKey.l = 0
  keyvalue.s = Space(255)
  datasize.l = 255
  
  If RegOpenKeyEx_(OpenKey, SubKey, 0, #KEY_READ, @hKey)
    keyvalue = "0"
  Else
    If RegQueryValueEx_(hKey, ValueName, 0, 0, @keyvalue, @datasize)
      keyvalue = "0"
    EndIf
    RegCloseKey_(hKey)
  EndIf
  
  ProcedureReturn keyvalue
EndProcedure





Programme.s = ReadRegKey(#HKEY_LOCAL_MACHINE, "Software\Clients\Mail\" + ReadRegKey(#HKEY_LOCAL_MACHINE, "Software\Clients\Mail", "") + "\shell\open\command", "")

; On nettoie le nom du programme
Programme2.s = RemoveString(Programme, Chr(34))
Pos = Len(Programme2) + 1
Repeat
  Pos - 1
Until Mid(Programme2, Pos, 1) = "." Or Pos = 1
Repeat
  Pos + 1
Until Mid(Programme2, Pos, 1) = " " Or Pos = Len(Programme2) + 1
Programme2 = Left(Programme2, Pos - 1)

MessageRequester("Messagerie par défaut", "Nom du programme [Registre] = " + Programme + Chr(10) + "Nom du programme [Nettoyé] = " + Programme2, 0)

RunProgram(Programme2)

Publié : dim. 04/juil./2004 18:58
par julien
Trop bon le soldat :D
ça marche impect sous :
Win XP et Thunderbird
Win Me et outlook Express 5

A voir pour les autres

Publié : dim. 04/juil./2004 19:22
par julien
problème, petite correction avec outlook express 6 sous xp car y'a une variable %ProgramFiles%

Code : Tout sélectionner

Procedure.s ReadRegKey(OpenKey.l, SubKey.s, ValueName.s)
  hKey.l = 0
  keyvalue.s = Space(255)
  datasize.l = 255
 
  If RegOpenKeyEx_(OpenKey, SubKey, 0, #KEY_READ, @hKey)
    keyvalue = "0"
  Else
    If RegQueryValueEx_(hKey, ValueName, 0, 0, @keyvalue, @datasize)
      keyvalue = "0"
    EndIf
    RegCloseKey_(hKey)
  EndIf
 
  ProcedureReturn keyvalue
EndProcedure





Programme.s = ReadRegKey(#HKEY_LOCAL_MACHINE, "Software\Clients\Mail\" + ReadRegKey(#HKEY_LOCAL_MACHINE, "Software\Clients\Mail", "") + "\shell\open\command", "")

; On nettoie le nom du programme
Programme2.s = RemoveString(Programme, Chr(34))
Pos = Len(Programme2) + 1
Repeat
  Pos - 1
Until Mid(Programme2, Pos, 1) = "." Or Pos = 1
Repeat
  Pos + 1
Until Mid(Programme2, Pos, 1) = " " Or Pos = Len(Programme2) + 1
Programme2 = Left(Programme2, Pos - 1)
Programme2 = ReplaceString(Programme2, "%ProgramFiles%","c:\Program Files") 


MessageRequester("Messagerie par défaut", "Nom du programme [Registre] = " + Programme + Chr(10) + "Nom du programme [Nettoyé] = " + Programme2, 0)

RunProgram(Programme2)