2017-09-30 4 views
-2

J'ai une application, et je mets un raccourci dans le dossier win + startup, et tout va bien.s'il vous plaît, comment coder le comportement de démarrage dans Delphi6?

Maintenant, je souhaite changer cette approche, en le codant, et j'ai donc utilisé le code indiqué au bas de cet article.

Le code entrées d'un clé à l'intérieur HKLM, mais il y a une erreur de fenêtres lorsque le système démarre:

violation d'accès à l'adresse 004815EB dans le module 'ap1.exe'. Lire d'adresse 00000000.

Cette erreur est similaire sur 3 ordinateurs différents, gagnant en cours d'exécution ou xp gagner 7.

procedure SetAutoStart(AppName, AppTitle: string; bRegister: Boolean); 
const RegKey = '\Software\Microsoft\Windows\CurrentVersion\Run'; // Run or 
RunOnce 
var Registry: TRegistry; 
begin 
    Registry := TRegistry.Create; 
    try Registry.RootKey := HKEY_LOCAL_MACHINE; 
     if Registry.OpenKey(RegKey, False) 
     then begin 
       if bRegister = False then Registry.DeleteValue(AppTitle) 
            else Registry.WriteString(AppTitle, 

AppName); 
       end; 
    finally Registry.Free; 
    end; 
end; 
+0

Comment, quand et où appelez-vous cette procédure 'SetAutoStart()'? –

+1

Il est très décevant que vous ayez négligé ma question. Bonne chance! –

Répondre

1

L'erreur est soulevée par le programme qui est exécuté au démarrage. Cela n'a rien à voir avec le code dans la question. Vous pouvez vérifier que le code dans la question se comporte comme prévu en vérifiant les entrées de Registre à l'aide de l'Éditeur du Registre.

Vous devrez déboguer le programme en cours d'exécution au démarrage. Vous ne serez pas en mesure d'attacher un débogueur interactif. Au lieu de cela, vous devrez utiliser le débogage de trace.

+0

programme lit un fichier, et ce fichier est toujours là. Si je lance l'application en cliquant sur son icône, tout va bien. Mais si je le lance en mettant un lien dans HKLM \ .. \ RUN, ou si je le lance par une autre application utilisant ShellExecute, il n'est plus possible de lire le fichier. En fonction des conditions de lancement, l'application peut ne pas être autorisée à accéder au fichier. – deadlykitten

+0

Faites un peu de débogage, comme je l'ai dit. Découvrez où votre code échoue. J'ai trouvé pourquoi. Tout est possible avec le débogage de trace. Si je devais deviner je dirais que vous avez utilisé des chemins relatifs et le répertoire de travail n'est pas ce que vous attendiez. N'utilisez pas de chemins relatifs. Utilisez des chemins absolus. –

+0

merci David! J'aurais dû utiliser des chemins complets ... – deadlykitten