Code : Tout sélectionner
Enumeration
#WinMailAccount
#ListAccount
#Btn_Analyse
#Text_Analyse
EndEnumeration
Procedure.s GetDirectoryFullPath(Flag.l)
hKey.l = 0
keyvalue.s = Space(255)
datasize.l = 255
If Flag < 24 Or Flag = 36
OpenKey.l = #HKEY_CURRENT_USER
Else
OpenKey.l = #HKEY_LOCAL_MACHINE
EndIf
SubKey.s = "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
Select Flag
Case 10 : ValueName.s = "Local AppData"
EndSelect
If RegOpenKeyEx_(OpenKey, SubKey, 0, #KEY_READ, @hKey)
MessageBeep_(#MB_ICONEXCLAMATION)
keyvalue = "Pas de clé!"
Else
If RegQueryValueEx_(hKey, ValueName, 0, 0, @keyvalue, @datasize)
keyvalue = ""
Else
keyvalue = Left(keyvalue, datasize - 1)
EndIf
RegCloseKey_(hKey)
EndIf
If Right(keyvalue, 1) <> "\" : keyvalue = keyvalue + "\" : EndIf
ProcedureReturn keyvalue
EndProcedure
Procedure AnalyseUserAccount()
If CountGadgetItems(#ListAccount)<>0
ClearGadgetItems(#ListAccount)
EndIf
Directory$ = GetDirectoryFullPath(10)+"Microsoft\Windows Mail\Local Folders\"
If Directory$
SetGadgetText(#Text_Analyse, "Examen de vos comptes Windows mail en cours...")
If ExamineDirectory(0, Directory$, "*.oeaccount") ;recherche les fichiers de compte dans le répertoire local
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
Fichier$ = DirectoryEntryName(0)
If ReadFile(1, Directory$+Fichier$); Si on peut lire le fichier
While Eof(1) = 0 ; On boucle jusqu'à la fin du fichier. (Eof = 'End Of File')
Chaine$ = ReadString(1,#PB_Unicode) ; mode UTF-16 / unicode (Chaîne de départ)
;CI-DESSOUS L'ORDRE EST IMPORTANT ET NE DOIT PAS ÊTRE MODIFIE POUR LA RECHERCHE DES INFORMATIONS
;SEUL L'AFFICHAGE PEUT ÊTRE DESORDONNE. CELA PERMET D'ACCELERER LE PROCESSUS EN EVITANT DE LIRE PLUSIEURS FOIS LE MÊME FICHIER
;J'utilise une ListIconGadget() qui montre bien la possibilité d'afficher dans une colonne puis une autre sans s'occuper de l'ordre
If FindString(Chaine$, "Account_Name", 1) <>0 ; si le nom est trouvé
;on nettoie le code pour en tirer que le nom
Chaine0$ = RemoveString(Chaine$, "<Account_Name type="+Chr(34)+"SZ"+Chr(34)+">"); première partie,
Chaine0$ = RemoveString(Chaine0$, "</Account_Name>"); fin de la ligne
ElseIf FindString(Chaine$, "POP3_Server type", 1) <>0 ;si le server pop est trouvé...
;on extrait le nom su server du code
Chaine1$ = RemoveString(Chaine$, "<POP3_Server type="+Chr(34)+"SZ"+Chr(34)+">")
Chaine1$ = RemoveString(Chaine1$, "</POP3_Server>")
ElseIf FindString(Chaine$, "SMTP_Server type", 1) <>0
Chaine2$ = RemoveString(Chaine$, "<SMTP_Server type="+Chr(34)+"SZ"+Chr(34)+">")
Chaine2$ = RemoveString(Chaine2$, "</SMTP_Server>")
ElseIf FindString(Chaine$, "SMTP_Display_Name type", 1) <>0
Chaine3$ = RemoveString(Chaine$, "<SMTP_Display_Name type="+Chr(34)+"SZ"+Chr(34)+">")
Chaine3$ = RemoveString(Chaine3$, "</SMTP_Display_Name>")
ElseIf FindString(Chaine$, "SMTP_Email_Address type", 1) <>0
Chaine4$ = RemoveString(Chaine$, "<SMTP_Email_Address type="+Chr(34)+"SZ"+Chr(34)+">")
Chaine4$ = RemoveString(Chaine4$, "</SMTP_Email_Address>")
EndIf
Wend
;Affichage dans la liste et dans le désordre (ça permet de choisir les infos qu'on veut)
AddGadgetItem(#ListAccount, -1, Chaine4$+Chr(10)+Chaine0$+Chr(10)+Chaine1$+Chr(10)+Chaine2$+Chr(10)+Chaine3$)
CloseFile(1) ; On refermele fichier *.oeaccount
Else
Debug "Impossible d'ouvrir le fichier: "+Fichier$
EndIf
EndIf
Wend
FinishDirectory(0)
EndIf
SetGadgetText(#Text_Analyse, "Statut de vos comptes Windows mail.")
Else
SetGadgetText(#Text_Analyse, "Dossier non trouvé! Vous devez utiliser Windows Vista.")
EndIf
EndProcedure
If OpenWindow(#WinMailAccount ,0,0, 795, 250, "Mes Comptes Windows Mail", #PB_Window_SystemMenu|#PB_Window_ScreenCentered |#PB_Window_TitleBar)
ButtonGadget(#Btn_Analyse,5,2,100,25,"Analyser")
TextGadget(#Text_Analyse,110,10,400,15,"")
ListIconGadget(#ListAccount, 5,30,785,200,"E-mail",200,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection); adresse mail correspondante
AddGadgetColumn(#ListAccount,1,"Nom du compte",150); Nom du compte utilisateur
AddGadgetColumn(#ListAccount,2,"Server POP",120) ; courrier entrant
AddGadgetColumn(#ListAccount,3,"Server SMTP",120); courrier sortant
AddGadgetColumn(#ListAccount,4,"Expéditeur",200); Nom de l'expéditeur tel qu'affiché dans les messages sortants
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_Analyse : AnalyseUserAccount()
EndSelect
Case #PB_Event_CloseWindow : Quitter = 1
EndSelect
Until Quitter
End
EndIf