Un lanceur pour outlook Express

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Un lanceur pour outlook Express

Message par Le Soldat Inconnu »

Salut,

J'ai plusieurs compte Outlook sous une même identité windows (mes parents et moi)

et c'est une vrai galère ce soft pour changer d'utilisateur.

J'ai bricoler un petit code pour permettre de choisir l'utilisateur au lancement.

Le principe est bete comme chou :

- le programme liste les utilisateurs d'outlook : c'est écrit dans le registre

- Je choisi l'utilisateur

- le programme écrit dans le registre l'utilisateur qui est lancé par défaut pour outlook, puis il lance outlook, qui s'ouvrira avec l'identité choisi.

C'est pas encore finis mais fonctionnel :

Code : Tout sélectionner

; PB4

Structure Identite_Info
  Nom.s
  ID.s
  Defaut.l
EndStructure
Global NewList Identite.Identite_Info()


; On recherche toutes les identitées
Resultat = RegOpenKey_(#HKEY_CURRENT_USER, "Identities", @hKey) ; Clé de registre d'outlook express
If Resultat = 0 ; Si le résultat est égal à 0, on a réussi à ouvrir la clé de registre
  n = 0
  Taille.l = 255
  Nom.s = Space(Taille)
  While RegEnumKeyEx_(hKey, n, @Nom, @Taille, 0, 0, 0, 0) <> #ERROR_NO_MORE_ITEMS ; Tant qu'il reste des valeur dans la clé de registre
    
    AddElement(Identite())
    Identite()\ID = Nom
    
    ; On prépare les variables pour rechercher la valeur suivante dans la clé de registre
    n + 1
    Taille = 255
    Nom = Space(Taille)
  Wend
  
  Taille.l = 255
  Nom.s = Space(Taille)
  Resultat = RegQueryValueEx_(hKey, "Start As", 0, 0, @Nom, @Taille)
  If Resultat = 0
    Identite_Defaut.s = Nom
  EndIf
  
  RegCloseKey_(hKey) ; on ferme la clé de registre ouverte
EndIf

; Pour chaque identitée, on recherche le nom de l'utilisateur
ForEach Identite()
  Resultat = RegOpenKey_(#HKEY_CURRENT_USER, "Identities\" + Identite()\ID, @hKey) ; Clé de registre de l'utilisiateur d'outlook express
  Identite()\Nom = "Sans identité ( " + Identite()\ID + " )"
  If Resultat = 0
    Taille.l = 255
    Nom.s = Space(Taille)
    Resultat = RegQueryValueEx_(hKey, "Username", 0, 0, @Nom, @Taille)
    If Resultat = 0
      Identite()\Nom = Nom
    EndIf
    RegCloseKey_(hKey)
  EndIf
  ; Identité par défaut ?
  If Identite_Defaut = Identite()\ID
    Identite()\Defaut = 1
  EndIf
Next

; Création de la fenêtre de lancement

NbIdentite = CountList(Identite())
#Bordure = 5
#Largeur = 250
#Largeur_Interne = #Largeur - 2 * #Bordure
#Hauteur_Titre = 20
#Hauteur_Bouton = 30
If OpenWindow(0, 0, 0, #Largeur, #Hauteur_Bouton * NbIdentite + #Hauteur_Titre + 2 * #Bordure, "Messagerie", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) And CreateGadgetList(WindowID(0))
  
  
  LoadFont(0, "Tahoma", 8, #PB_Font_HighQuality)
  TextGadget(0, #Bordure, #Bordure, #Largeur_Interne - #Hauteur_Titre, #Hauteur_Titre, "Choisissez votre compte de messagerie", #PB_Text_Center)
  SetGadgetFont(0, FontID(0))
  
  ButtonGadget(100, #Largeur - #Bordure - #Hauteur_Titre, #Bordure, #Hauteur_Titre, #Hauteur_Titre, "?")
  
  LoadFont(1, "Tahoma", 9, #PB_Font_Bold | #PB_Font_HighQuality)
  SetGadgetFont(#PB_Default, FontID(1))
  
  n = 0
  ForEach Identite()
    n + 1
    If Identite()\Defaut
      ButtonGadget(n, #Bordure, #Bordure + #Hauteur_Titre + #Hauteur_Bouton * (n - 1), #Largeur_Interne, #Hauteur_Bouton, Identite()\Nom, #BS_DEFPUSHBUTTON)
    Else
      ButtonGadget(n, #Bordure, #Bordure + #Hauteur_Titre + #Hauteur_Bouton * (n - 1), #Largeur_Interne, #Hauteur_Bouton, Identite()\Nom)
    EndIf
  Next
  
  Repeat
    Event = WaitWindowEvent()
    
    If Event = #PB_Event_Gadget
      
      ; On change l'identité par défaut
      IdentiteID = EventGadget()
      If IdentiteID = 100
      
        
      
      Else
        
        SelectElement(Identite(), IdentiteID - 1)
        Resultat = RegOpenKey_(#HKEY_CURRENT_USER, "Identities\", @hKey) ; Clé de registre de l'utilisiateur d'outlook express
        If Resultat = 0
          RegSetValueEx_(hkey, "Start As", 0, #REG_SZ, Identite()\ID, Len(Identite()\ID) + 1)
          RegCloseKey_(hKey)
        EndIf
        ; On lance outlook Express
        RunProgram("msimn.exe")
        ; Fin du programme
        End
        
      EndIf
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow
  
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)]
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

super programme Régis
Répondre