Autor Beitrag
mehmeh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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 Suche in der Entwickler-Ecke PARAMCOUNT und Suche in der Entwickler-Ecke PARAMSTR.

_________________
We are, we were and will not be.
mehmeh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: Di 20.09.05 10:09 
das heißt wenn ich dies hier in mein prog schreibe

ausblenden 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 user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: Mi 21.09.05 11:49 
an digi_c: Ich versteh dich nicht
_____________________
an alle

ich hab den Registry Eintrag so geändert
ausblenden 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            // wenn die Checkbox aktiviert wurde, 
    try             // wird der Autostart in die Registry eingetragen
     try
      MyReg.RootKey := HKEY_CURRENT_USER; // oder HKEY_LOCAL_MACHINE für alle Benutzer
      MyReg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', true);
      MyReg.WriteString('Session-Logger',Application.ExeName+ ' autostart');
      MyReg.CloseKey;
      autostart := true; // Die Variable autostart wird auf true gesetzt
     except        // tritt ein Fehler während des Eintrags auf,
      on E : Exception do     // wird eine Exception ausgelöst, mit einer Fehlermeldung
       begin                  // und die Werte werden zurückgestzt
         MessageDlg('Autostart konnte nicht gesetzt werden!', mtError, [mbOK], 0);
         autostart := false;     // autostart wird auf false gestzt
         CheckBox1.Checked := false;  // und die Checkbox deaktiviert
       end;
      end;


und hier will ich nachschauen ob das programm mit autostart gestartet ist
ausblenden 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 user profile iconraziel: ___-Zeile gekürzt.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 21.09.05 12:27 
ausblenden Delphi-Quelltext
1:
MyReg.WriteString('Session-Logger','"' + paramstr(0) + ' autostart"');					

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 97

WIN XP
D5 Prof
BeitragVerfasst: Mi 21.09.05 13:26 
user profile iconretnyg hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
MyReg.WriteString('Session-Logger','"' + paramstr(0) + ' autostart"');					



das funktioniert nicht, weil mein Programm jetzt nicht mehr im autostart ist
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: 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.