| Autor |
Beitrag |
hassedelphi
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Sa 23.08.03 08:09
hi
ist es mit verständlichem qt zu bewerkstelligen, dass sich das programm automatisch beim hochfahren von windows startet?
Moderiert von Tino: Titel geändert & Topic verschoben.
_________________ you're not be able to help, that you're an human
|
|
cromos
      
Beiträge: 219
Delphi 7
|
Verfasst: Sa 23.08.03 09:46
Hi,
Am besten via Registry. Stichwort "TRegistry"
Dann komt es auch noch darauf an was für ein System du hast.
Win 98 oder 2000,XP usw.
Bei XP und 2000 kannst du z.b. den Schlüssel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
nehmen.
Gruss
Cromos
|
|
derDoc
      
Beiträge: 623
Win Vista Prof
D2007 Prof
|
Verfasst: Sa 23.08.03 09:59
Der Schlüssel ist auch bei Win9x vorhanden.
Du kannst die Datei auch einfach in das Autostartverzeichnis (Systemabhängig) kopieren.
_________________ MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 23.08.03 10:36
Anmerkung zu beidem:
Der Schlüssel HKEY_LOCAL_MACHINE setzt bei NT-Systemen spezielle Berechtigungen voraus, weil da nicht jeder drin rumschreiben kann. Vorteil auf der anderen Seite: der Autostart gilt dann für alle angemeldeten Benutzer.
Wenn man den Autostart im Programm ein- und ausschalten können soll, dann würde ich über HKEY_CURRENT_USER nachdenken, weil dann jeder Benutzer die Möglichkeit hat, das Programm nach seinem Wunsch automatisch zu starten ... oder eben nicht ... (Allerdings hat nicht jeder Benutzer auch Admin-Rechte. Und das ist IMHO auch richtig so!)
Und wenn´s der Autostart-Ordner sein darf, dann gilt das gleiche. @derDoc: Systemabhängig? Es gibt eine Shell-Funktion, mit der du system unabhängig unter jeder Windows-Version den Autostart-Ordner ermitteln kannst. Die Frage ist hier nur wieder: soll das Programm nur dem aktuell angemeldeten Benutzer zur Verfügung stehen? Oder soll es generell gestartet werden, egal wer sich anmeldet. In dem Fall ist der Autostart-Ordner von "All Users" zu suchen. Und das ist bloß eine andere CSIDL-Konstante. 
|
|
derDoc
      
Beiträge: 623
Win Vista Prof
D2007 Prof
|
Verfasst: Sa 23.08.03 11:23
Vielleicht besitzt der Herr ja die Güte auch diese CSIDL Konstante zu benennen.
Und vielleicht kann er mir auch sagen, wo der "All Users" Autostartordner auf einem Windows 98 sein soll.
Was ich aussagen wollte ist, dass bei Win9x der Autostartordner ein anderer ist, als bei WinNT.
_________________ MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 23.08.03 12:15
Entschuldigung.
Ich bin mal davon ausgegangen, dass du den entsprechenden FAQ-Beitrag mit den speziellen Windows-Ordnern evtl. kennst. Dort wird (wie eigentlich immer in solchen Fällen) das Platform SDK von Microsoft als Referenz genannt. Online als Teil der MSDN zu finden. Und wenn man sich die benutzte Shell-Funktion (SHGetSpecialFolderPath, und Co.) mal anschaut, kommt man automatisch zur Liste mit den CSIDL-Konstanten.
Der Autostart des angemeldeten Benutzers wäre bspw. "CSIDL_ALTSTARTUP", der für alle Benutzer "CSIDL_COMMON_ALTSTARTUP".
Und darum spielt es auch keine Rolle, auf welchem Windows du die Funktion aufrufst. Sie liefert in jedem Fall den richtigen Ordner zurück, da sie intern die OS-abhängigen korrekten Daten sucht. Wichtig ist nur, dass du bei den CSIDL-Konstanten die Versionsangabe beachtest. Manche der Konstanten stehen bspw. erst ab Version 5.0 der "shell32.dll" zur Verfügung (Win ME, 2000 und höher) und würden dann natürlich unter einer älteren Version kein Ergebnis haben.
Außerdem kann man auch unter Windows 9x mehrere Benutzerkonten einrichten. Es ist zwar nicht mit einem NT-System vergleichbar, aber ich habe jetzt bereits einen Ordner "Windows\All Users\Startmenü\Programme\Autostart" - und bei mir ist unter 98 nur ein Benutzer eingerichtet.
Ich hoffe, deine Neugier ist gestillt ... die Fragen sind geklärt ... ?
|
|
derDoc
      
Beiträge: 623
Win Vista Prof
D2007 Prof
|
Verfasst: Sa 23.08.03 12:58
Ich wollte nur erfahren, welches CSIDL du meintest, weil ich bisher immer CSIDL_COMMON_STARTUP (Nur auf NT), bzw. CSIDL_STARTUP benutzt habe.
_________________ MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 23.08.03 13:32
Die meine ich ja eigentlich auch. Bin beim Kopieren im PSDK versehentlich auf ALTSTARTUP gerutscht. Was ich aber sagen will ist, dass CSIDL_STARTUP und CSIDL_COMMON_STARTUP sowohl unter NT als auch unter 9x funktionieren.
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Sa 23.08.03 17:05
thx für antworten. aber ehrlich gesagt habe ich nichts verstanden  . geht dass nicht irgendwie einfacher?
_________________ you're not be able to help, that you're an human
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Sa 23.08.03 17:30
Hallo,
also dir wurden hier 2 mögliche Lösungen vorgestellt.
Die erste funktioniert mit der Registry von Windows. Du kannst unter folgenden Schlüsseln wählen, wo du dein Programm reinschreiben willst.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, wenn das Programm immer beim Start geladen werden soll.
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, wenn der Benutzer selber entscheiden soll, ob das Programm gestartet werden soll. Somit gilt die Einstellung dann nur für das eine Benutzerkonto.
Wie du solche Werte in die Schlüssel einträgst, findest du im FAQ bzw. du kannst die Forensuche bzw. Delphi-Hilfe mal nach TRegistry durchsuchen. Da wirste bestimmt fündig. Und keine Angst, schwer ist das nicht.
Die zweite Methode ist nun folgende: Du kannst ein Verknüpfung in den Autostart-Ordner kopieren. Nun gibt es dabei aber ein kleines Problem. Windows 9x und WinNT benutzen nicht die gleichen Ordner für den Autostart. Um diesen herauszufinden, kannst du die Funktion SHGetSpecialFolderPath verwenden. Mit den CSIDL-Konstanten kannste der Funktion dann übergeben, was für einen Ordner du willst. Für Informationen, kannste auch hier im Forum suchen (dürfte da sicher schon ein paar Threads geben) oder am besten guckst du gleich in der PSDK bzw. in der MSDN-Library ( msdn.microsoft.com/library/default.asp ).
Wie man eine Verknüpfung anlegt, steht garantiert hier im Forum.
Noch ein abschließendes Wort: Ich würde dir die zweite Methode verwenden, da ich es als Benutzer grundsätzlich hasse, wenn sich ein Programm in die Registry hängt, aber das musst du schließlich selber entscheiden. 
_________________ Viele Grüße
Jakob
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 23.08.03 17:44
Werd´ mal nicht so sein.
- Registry-Autostart, wobei als Ergänzung nochmals auf HKEY_CURRENT_USER hingewiesen sei. Dazu müsstest du in Tinos Code die Variable "aPrivate" auf TRUE setzen, dann wird der Eintrag unter HKCU angelegt. Gründe, warum´s in HKLM evtl. nicht funktioniert bzw. wann das besser ist, habe ich genannt. DeCodeGuru hat´s noch mal zusammengefasst.
- Autostart über das Startmenü. Am Ende des Beitrags findest du einen Beispielaufruf von Popov, in dem er den Autostart-Ordner des angemeldeten Benutzers verwendet (CSIDL_STARTUP). Soll dein Programm für alle Benutzer gestartet werden, verwendest du stattdessen CSIDL_COMMON_STARTUP.
Bitte beim nächsten Mal selbst die FAQs durchstöbern. Ich krieg nichts dafür, wenn ich für dich suche oder dir das Denken abnehme. Du willst das in ein Programm schreiben, nicht ich!
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: Sa 23.08.03 17:59
 thx.  tschuldiung, dass ich nicht nachgeguckt habe. nun könnt ihr euch zur gruppe der delphiforumer zählen, die mich nicht dazu forcen selbst zu suchen. also nochmal vielen dank (auch wenn ich's jetzt doch nicht hinkriege)  !
_________________ you're not be able to help, that you're an human
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Sa 23.08.03 18:32
| Zitat: | | auch wenn ich's jetzt doch nicht hinkriege |
ajo, dann frag halt nochmal nach. 
_________________ Viele Grüße
Jakob
|
|
hassedelphi 
      
Beiträge: 101
WIN XP
D7 Enterprise
|
Verfasst: So 24.08.03 11:26
_________________ you're not be able to help, that you're an human
|
|