AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Autostart Manager
Thema durchsuchen
Ansicht
Themen-Optionen

Autostart Manager

Ein Thema von Martin K · begonnen am 13. Jun 2006 · letzter Beitrag vom 19. Okt 2006
Antwort Antwort
Seite 2 von 8     12 34     Letzte »    
Benutzerbild von Martin K
Martin K
Registriert seit: 20. Okt 2005
Autostart-Manager ist ein einfaches kleines Programm, mit dem man schnell alle Programme findet, die im Autostart stehen.
Es werden die Autostart-Programme aus der Registry und die aus dem Startmenü aufgelistet.

Des Weiteren können Einträge bearbeitet, gelöscht oder neue Programme in den Autostart hinzugefügt werden.
Außerdem wird zu jedem Autostart-Eintrag noch das Icon des Programms angezeigt - wird kein Icon angezeigt, ist der Eintrag fehlerhaft (Pfadangabe nicht korrekt).

Mein Programm schreibt ansonsten nichts in die Registry und installiert werden muss auch nix.
  • Update 1:
    Fehler, die hier im Forum beschrieben wurden, sind behoben.
  • Update 2:
    Funktion zum Auslesen der Programm-Icons verbessert.
  • Update 04.07.2006
  • auch Einträge im Startmenü werden berücksichtigt
  • Einträge können unter anderem Namen/anderem Ort gespeichert werden
  • PopupMenu (rechte Maustaste), ToolBar und Tastenkombinationen (auch Doppelklick/Enter/Esc)
  • mit rechte Maustaste auf ToolBar kann Ansicht eingestellt werden
  • Einstellungen werden in INI-Datei gespeichert (keine INI bedeutet Standard-Einstellungen)
  • bessere Bearbeiten/Neuer Eintrag-Funktion mit mehr Einstellmöglichkeiten
    Neuer Screenshot!
  • Update 06.07.2006
    Verbesserung im Code bei der INI-Datei, nix besonderes...
  • Update 17.09.2006
  • Sortierfunktion hinzugefügt:
    Je nach dem, auf welche Titelleiste man in der Liste klickt, wird nach diesen Einträgen sortiert
  • Folgende Orte für Autostart-Einträge werden jetzt unterstützt:
    aktueller Benutzer, alle Benutzer, Default User, Local System, Local Service, Network Service - jeweils Startmenü und Registry
  • Copy-Funktion:
    einfach einen Eintrag auswählen und Strg+C drücken, dann wird der Eintrag in Textform in den Zwischenspiecher kopiert
    Neuer Screenshot
  • Update 22.09.2006
  • kleine Statistik hinzugefügt, die die Anzahl der Autostart-Einträge anzeigt
    Neuer Screenshot
  • Update 01.10.2006
    kleinen Fehler behoben: Fehlerhafte Einträge in der Registry werden jetzt auch ohne Symbol angezeigt (vorher war es fälschlicher Weise das Ordner-Symbol)
    ab jetzt mit TurboDelphi compiliert
  • Update 19.10.2006
    leere Einträge in der Registry gelten natürlich auch als fehlerhaft im Autostart und werden nun auch als solche angezeigt;
    auch fehlerhafte Verknüpfungen (z.B. falsche Pfadangabe) im Startmenü werden nun als fehlerhafte Autostart-Einträge angezeigt, vorher wurden diese einfach ignoriert
Miniaturansicht angehängter Grafiken
screenshot_183.png  
Angehängte Dateien
Dateityp: exe autostartmanager_210.exe (710,5 KB, 150x aufgerufen)
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
 
Benutzerbild von Martin K
Martin K

 
Turbo Delphi für Win32
 
#11
  Alt 14. Jun 2006, 11:38
Aha, na da kommen wir doch schon der Sache näher.
Also bei mir geht's so schnell, dass ich die Balken gar nicht zählen kann.

Also bei 80% werden die Autostart-Einträge von allen Usern ausgelesen, also HKEY_USERS und von allen Schlüsseln, die da drin sind, die Autostart-Einträge.
Wie viele Schlüssel habt ihr denn da?

Wie viele User habt ihr denn bei euch eingerichtet?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#12
  Alt 14. Jun 2006, 11:45
Selbst bei 25 Benutzern sollte das kein Thema sein. Ich denke mal der fehler liegt in deinem Code.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

 
Turbo Delphi für Win32
 
#13
  Alt 14. Jun 2006, 11:54
Ja, bin ich denn der eingigste bei dem es läuft

Hab es mit einem User und auf dem anderen Rechner mit 4 Usern getestet.
Aber selbst bei 25 sollte es eigentlich gehen.

Hier mal ein bissl Code-Fetzen:
Delphi-Quellcode:
    ProgressBar1.Position:=60;
    Reg.RootKey:=HKEY_LOCAL_MACHINE;
    List.Clear;
    if Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',False) then
    try
      Reg.GetValueNames(List);
      if List.Count>0 then
        for i:=0 to List.Count-1 do
          NewItem(List[i],Reg.ReadString(List[i]),'HKEY_LOCAL_MACHINE');
    finally
      Reg.CloseKey;
    end;
    ProgressBar1.Position:=80;
    Reg.RootKey:=HKEY_USERS;
    List.Clear;
    if Reg.OpenKey('',False) then
    try
      Reg.GetKeyNames(Keys);
      Reg.CloseKey;
      while Keys.Count>0 do
        if Reg.OpenKey(Keys[0]+'\Software\Microsoft\Windows\CurrentVersion\Run',False) then
        begin
          Reg.GetValueNames(List);
          if List.Count>0 then
            for i:=0 to List.Count-1 do
              NewItem(List[i],Reg.ReadString(List[i]),'HKEY_USERS\'+Keys[0]);
          List.Clear;
          Keys.Delete(0);
          Reg.CloseKey;
        end;
    finally
      Reg.CloseKey;
    end;
List und Keys sind StringListen, ansonsten ist das Prinzip bei HKEY_CURRENT_USER und HKEY_CLASSES_ROOT dasselbe wie bei HKLM,
lediglich bei HKEY_USERS ist es anders, da ja noch die Unterschlüssel einzeln ausgelesen werden.
Und NewItem ist eine Prozedur, die dann den neuen Eintrag zur ListView hinzufügt.
Inkl. einer Funktion die das Icon zum Pfad sucht, die Funktion wird gerade noch verbessert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#14
  Alt 14. Jun 2006, 11:59
Warum ist das:
Delphi-Quellcode:
      while Keys.Count>0 do
        if Reg.OpenKey(Keys[0]+'\Software\Microsoft\Windows\CurrentVersion\Run',False) then
        begin
          Reg.GetValueNames(List);
          if List.Count>0 then
            for i:=0 to List.Count-1 do
              NewItem(List[i],Reg.ReadString(List[i]),'HKEY_USERS\'+Keys[0]);
          List.Clear;
          Keys.Delete(0);
          Reg.CloseKey;
        end;
keine for-Schleife? Du weißt doch, wie viele Eintrage in der Liste Keys sind.

Und wie erstellst du das TRegistry-Objekt? Ich würde es mal mit KEY_READ versuchen als Parameter der Create-Methode.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

 
Turbo Delphi für Win32
 
#15
  Alt 14. Jun 2006, 12:05
Zitat von Luckie:
Warum ist das: [...] keine for-Schleife? Du weißt doch, wie viele Eintrage in der Liste Keys sind.
Ja, werde mal eine for-Schleife draus machen...
Bin halt ein Variablen-Sparer

Zitat von Luckie:
Und wie erstellst du das TRegistry-Objekt? Ich würde es mal mit KEY_READ versuchen als Parameter der Create-Methode.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Reg:=TRegistry.Create;
 {...}
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(Reg);
end;
Wenn ich es mit KEY_READ mache, kann ich doch keine neuen Einträge mehr reinschreiben/löschen/ersetzen ???
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

 
Delphi 2006 Professional
 
#16
  Alt 14. Jun 2006, 12:09
Bei mir funktioniert das auslesen jetztr mit der debug-version.
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

 
Turbo Delphi für Win32
 
#17
  Alt 14. Jun 2006, 12:12
Zitat von DGL-luke:
Bei mir funktioniert das auslesen jetztr mit der debug-version.
Endlich mal einer, bei dem es klappt
Wie lange dauert denn das Auslesen?

Komisch ist:
Wenn Du auf den Button klickst wird genau dasselbe gemacht, was vorher bei FormCreate gemacht wurde!
Bis auf die ProgressBar hab ich sonst wirklich nix geändert...
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

 
Delphi 2006 Professional
 
#18
  Alt 14. Jun 2006, 12:19
Hmm... nur ne sekunde, mehr nicht, ich hab auch nur zwei,drei einträge.

Allerdings solltest du das nicht im formcreate machen, wenn dann im formshow! Im formcreate sind die ganzen komponenten, auf die du wahrscheinlich zugreifst, noch gar nicht da.

EDIT: Es sollte dann eigentlcih AVs hageln...
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#19
  Alt 14. Jun 2006, 12:36
Zitat von Martin K:
Wenn ich es mit KEY_READ mache, kann ich doch keine neuen Einträge mehr reinschreiben/löschen/ersetzen ???
Ja und? Willst du zu dem Zeitpunkt doch eh nicht, sondern nur anzeigen.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

 
Turbo Delphi für Win32
 
#20
  Alt 14. Jun 2006, 12:42
Zitat von Luckie:
Zitat von Martin K:
Wenn ich es mit KEY_READ mache, kann ich doch keine neuen Einträge mehr reinschreiben/löschen/ersetzen ???
Ja und? Willst du zu dem Zeitpunkt doch eh nicht, sondern nur anzeigen.
Und wie kann ich dann zu einem späteren Zeitpunkt das KEY_READ ändern?
Dann muss ich jeden mal die Registry neu createn???

Zitat von DGL-luke:
Hmm... nur ne sekunde, mehr nicht, ich hab auch nur zwei,drei einträge.

Allerdings solltest du das nicht im formcreate machen, wenn dann im formshow! Im formcreate sind die ganzen komponenten, auf die du wahrscheinlich zugreifst, noch gar nicht da.

EDIT: Es sollte dann eigentlcih AVs hageln...
Nö, bei mir hat's ja auch in FormCreate geklappt und AV's gab's definitiv keine!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 8     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz