Entwickler-Ecke
Windows API - Herausbekommen wie das Prog gestartet wurde
mehmeh - Di 20.09.05 09:03
Titel: Herausbekommen wie das Prog gestartet wurde
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 - 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 - 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 - 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.
mehmeh - 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 - Di 20.09.05 10:33
Wenn du beim Eintrag in der Autostart-Liste den entsprechenden Parameter mit übergibts, dann ja.
Gausi - 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 ;-)
digi_c - 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 - 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 - 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; |
mehmeh - Mi 21.09.05 13:26
retnyg hat folgendes geschrieben: |
Delphi-Quelltext 1:
| MyReg.WriteString('Session-Logger','"' + paramstr(0) + ' autostart"'); |
|
das funktioniert nicht, weil mein Programm jetzt nicht mehr im autostart ist
digi_c - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!