Cls a écrit :On voit que le fichier contact a changé entre les 2 ouvertures, ça ne vient pas de là ?
L'un est sur C:, l'autre sur E:.
Bon dieu mais bien sur que ça doit venir de là !! Mais la question est : POURQUOI ?
a aucun moment je ne demande au soft d'aller piocher sur le bureau !
Pour que vous puissiez tester, voilà un exemple qui vous montrera de A à Z le soucis.
Pour l'inscription/suppression du registre j'utilise la Droopy lib, si vous ne l'avez pas je vous laisse modifier le code (je ne me rappelle pas des API a utiliser)
Pensez bien à compiler le programme avant de le tester
1- compilez le soft ou vous voulez
2 - creez un contact
3 - activez le demarrage auto
4 - redemarrez le pc
Code : Tout sélectionner
; Test de lecture de fichier Pref au démarrage de windows. PB 4.30 / Ar-S
;{- Enumerations / DataSections
Enumeration
#Win : #BT_REG : #BT_UNREG : #List : #BT_CREER : #String_5 : #String_6 : #Text_7 : #Text_8
EndEnumeration
Global CleAutoRun$="HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" ; Clé pour démarrage auto
Global DefPath$=GetCurrentDirectory() ; repertoire courant
Global NomFichierPref$="testpref.txt" ; fichier pref
Global FichierPref$=DefPath$+NomFichierPref$ ; chemin complet du fichier pref
Global DefEexeName$=GetProgramName() ; Nom de l'exe
Declare ListeContacts()
Procedure OpenWindow_Win()
If OpenWindow(#Win, 721, 552, 282, 363, "Test demarrage auto et Prefs", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
ButtonGadget(#BT_REG, 0, 290, 280, 35, "Activer le démarrage Auto avec Windows")
ButtonGadget(#BT_UNREG, 0, 327, 280, 35, "Supprimer la clé du registre")
ListViewGadget(#List, 5, 10, 270, 170)
ButtonGadget(#BT_CREER, 155, 204, 125, 85, "Creer pref")
StringGadget(#String_5, 5, 205, 145, 25, "")
StringGadget(#String_6, 5, 263, 145, 25, "")
TextGadget(#Text_7, 5, 185, 95, 20, "Entrez un nom")
TextGadget(#Text_8, 5, 240, 95, 20, "Entrez un prénom")
EndIf
EndProcedure
Procedure PremierLancement()
; Test pour voir si le fichier existe
TestPref.q = FileSize(FichierPref$)
If TestPref=-1 ; Si le fichier est inexistant
If CreatePreferences(FichierPref$) ; s'il n'existe pas on le crée
ClosePreferences()
Debug "Le fichier de contact vient d'être créé"
Else
Debug "Impossible de créer le fichier pref"
EndIf
Else
Debug "Le fichier de contact a été trouvé"
EndIf
EndProcedure
Procedure ListeContacts()
ClearGadgetItems(#List)
NewList Contacts.s()
If OpenPreferences(FichierPref$)
ExaminePreferenceGroups()
While NextPreferenceGroup()
AddElement(Contacts())
Contacts()=PreferenceGroupName()
AddGadgetItem(#List,-1,Contacts())
Debug Contacts()
Wend
ClosePreferences()
Else
MessageRequester("Erreur","Ficher Contact introuvable ! [Erreur ligne 48]")
EndIf
EndProcedure
PremierLancement()
OpenWindow_Win()
ListeContacts()
;{- Event loop
Repeat
Select WaitWindowEvent()
; ///////////////////
Case #PB_Event_Gadget
Select EventGadget()
Case #BT_REG
RegCreateKeyValue(CleAutoRun$,"TESTpref",DefPath$+DefEexeName$,#REG_SZ,".")
MessageRequester("Information","Le programme se lancera avec windows"+Chr(10)+"clé : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"+Chr(10)+"Nom : TESTpref"+Chr(10)+"Données : "+DefPath$+DefEexeName$)
Case #BT_UNREG
RegDeleteValue(CleAutoRun$,"TESTpref",".")
MessageRequester("info","La clé a été supprimé du registre, le programme ne démarrera plus avec windows")
Case #BT_CREER
Nom$=GetGadgetText(#String_5)
Prenom$=GetGadgetText(#String_6)
If Nom$<>"" And Prenom$<>""
Group$=Nom$+" "+Prenom$
If OpenPreferences(FichierPref$)
PreferenceGroup(LCase(Group$))
WritePreferenceString("NOM",Nom$)
WritePreferenceString("PRENOM",Prenom$)
ClosePreferences()
Group$="" ;On reinitialise le groupe (contact) recherché
ListeContacts()
Else
MessageRequester("Erreur","Fichier contact introuvable [Erreur ligne 86]")
EndIf
Else
MessageRequester("Erreur","Entrez un nom et un prénom avant de cliquer sur créer")
EndIf
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Win
CloseWindow(#Win)
Break
EndSelect
EndSelect
ForEver
Si le problème persiste c'est que ça vient de l'interaction de windows/pb au demarrage.