Autor |
Beitrag |
mehmeh
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Di 20.09.05 09:03
Hallo wie bekomme ich heraus wie mein Programm gestartet wurde.
Also ich mein ob es mit Autostart gestartet ist oder ob ich es selbst gestartet habe.
Ich will das mein Program, wenn es aus dem Autostart heraus gestartet wird, alles von alleine macht und wenn ich es starte, das ich es bzw der Benutzer es macht.
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 20.09.05 09:11
Hast du schon daran gedacht, dem Programm beim Start einfach Parameter mit zu übergeben?
Wenn Parameter da sind, macht dein Programm alles alleine (mit den passenden Parametern), sonst eben nicht.
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Di 20.09.05 09:18
ich habe eine Checkbox wo ich Autostart ja/nein mache, das wird dann in einer ini gespeichert und beim starten des Programms wird dies aus der ini ausgelesen. allerdings steht der wert immer auf ja und demzufolge fängt das prog auch immer an, zumachen egal wie es gestartet wurde.
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 20.09.05 09:27
Was jasocul glaube ich meinte ist, dass du bei dem Eintrag in der AutoStart-Liste nicht nur "meinprog.exe" einträgst, sondern "meinprog.exe autostart". Den Parameter "autostart" kannst du dann in deinem Programm abfragen und entsprechend alles automatisch machen. Wenn der User das Programm doppelklickt, fehlt dieser Parameter, und das Programm macht das alles nicht automatisch. Stichworte dazu sind PARAMCOUNT und PARAMSTR.
_________________ We are, we were and will not be.
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Di 20.09.05 10:09
das heißt wenn ich dies hier in mein prog schreibe
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| for i := 1 to ParamCount do begin if LowerCase(ParamStr(i)) = 'autostart' then begin ... end; end; |
weiß es wie es gestartet wurde?
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 20.09.05 10:33
Wenn du beim Eintrag in der Autostart-Liste den entsprechenden Parameter mit übergibts, dann ja.
_________________ We are, we were and will not be.
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Di 20.09.05 10:36
das weiß ich nicht, ich hab ein registy-eintrag gemacht
so wie hier www.delphi-forum.de/...;highlight=autostart
reicht das? Wenn nicht wie mach ich das?
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 20.09.05 10:41
Ich kenn mich mit der Registry nicht so aus, aber ich würde vermuten, dass du da was modifizieren musst:
MyReg.WriteString('Session-Logger',Application.ExeName + ' autostart');
Das würde ich erstmal probieren...aber ohne Garantie 
_________________ We are, we were and will not be.
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: Di 20.09.05 10:44
Da muss das genauso aufgerufen werden "...\programm autostart".
Du kannst auch das programm per Eingabeaufforderung mit "programm autostart" ausführen und es würde das trotzdem erkennen.
Ich empfehle aber das Parameter mit Bindestrich oder Slash aufzuführen, das wird eigentlich immer so gemacht z.B. bei "DIR /?". Muss dann natürlich so im Programm als auch beim Aufruf so sein 
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Mi 21.09.05 11:49
an digi_c: Ich versteh dich nicht
_____________________
an alle
ich hab den Registry Eintrag so geändert
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| If CheckBox1.Checked = True then begin try try MyReg.RootKey := HKEY_CURRENT_USER; MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', true); MyReg.WriteString('Session-Logger',Application.ExeName+ ' autostart'); MyReg.CloseKey; autostart := true; except on E : Exception do begin MessageDlg('Autostart konnte nicht gesetzt werden!', mtError, [mbOK], 0); autostart := false; CheckBox1.Checked := false; end; end; |
und hier will ich nachschauen ob das programm mit autostart gestartet ist
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| for i := 1 to ParamCount do
begin if LowerCase(ParamStr(i)) = 'autostart' then begin AddLogEntry('Autostart'); Timer2Timer(Sender); end; |
aber es funktioniert nicht
Moderiert von raziel: ___-Zeile gekürzt.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mi 21.09.05 12:27
Delphi-Quelltext 1:
| MyReg.WriteString('Session-Logger','"' + paramstr(0) + ' autostart"'); |
Delphi-Quelltext 1: 2: 3: 4: 5:
| if ParamStr(1) = 'autostart' then begin AddLogEntry('Autostart'); Timer2Timer(Sender); end; |
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
mehmeh 
      
Beiträge: 97
WIN XP
D5 Prof
|
Verfasst: Mi 21.09.05 13:26
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: Do 22.09.05 10:47
Wieso den das? Über paramstr(0) erhälst du doch den Namen des Programms und der wird eingetragen.
Oben meinte ich nur, das es vielleicht klüger wäre dein Parameter anstatt "autostart" "-autostart" zu nennen, weil das eigentlich Standart ist.
Und das es egal ist ob dein Programm per Registry,Autostartordner oder manuell gestartet wird, das Parameter wird ja immer ausgewertet.
|
|