Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Anwendung beim Windows-Start ausblenden ? (https://www.delphipraxis.net/127140-anwendung-beim-windows-start-ausblenden.html)

thomas2009 8. Jan 2009 10:54


Anwendung beim Windows-Start ausblenden ?
 
Hallo

mein Programm startet beim Windows-Start:
Delphi-Quellcode:
...
Registry.WriteString(extractfilepath(application.ExeName)+Application.ExeName + ' nebenuhrbinich', Application.ExeName);...
Delphi-Quellcode:
program Project1;
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}
procedure HideForms;
begin
Form2.Timer1.Enabled:=True;
end;

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);

 if Paramstr(1) = 'nebenuhrbinich' then
  HideForms else
  Form1.Caption:=Paramstr(1);

end.


__________
procedure TForm2.Timer1Timer(Sender: TObject);
begin
timer1.Enabled:=false;
Form2.Hide;
Form1.Hide;
end;
Das Problem: Wenn ich das Programm "project1.exe" über den Parameter "nebenuhrbinich" aufrufe:
C:\Project1.exe nebenuhrbinich
dann wird es von Windows beendet : "Project1.exe" hat ein Problem festgestellt und muss beendet werden

wenn ich das Programm direkt starte dann läuft ohne Probleme

wo kann das Problem liegen?
Ich möchte das Programm über einen Parameter Versteckt starten und über das Icon neben Uhr einblenden

nahpets 8. Jan 2009 11:03

Re: Anwendung beim Windows-Start ausblenden ?
 
Hallo,

warum versteckst Du die Formulare per Timer und auf welche Zeit íst der eingestellt?
Hast Du im Programm eine Funktion, um das TrayIcon zu erstellen? Bei der JVCL gibt es eine entsprechende Komponente, damit sollte das eigentlich problemlos funktionieren, in dem Du da die entsprechenden Attribute setzt. Da kannst Du dann auch konfigurieren ob das Programm bei Doppelklick wieder in den Vordergrund kommen soll und sich beim Minimieren wieder in den SysTray zurück begibt...

chipNET 8. Jan 2009 12:14

Re: Anwendung beim Windows-Start ausblenden ?
 
Wenn du ja doch die Anwendung in den Systray minimieren möchtest, dann greife doch auf die CoolTrayIcons Komponenten zurück. Da ist alles bereits fertig.

PS: In deinem Code fehlt übrigends ein Application.Run;

Uwe Raabe 8. Jan 2009 12:22

Re: Anwendung beim Windows-Start ausblenden ?
 
Was erwartest du denn als Ergebnis von diesem Ausdruck:

Delphi-Quellcode:
extractfilepath(application.ExeName)+Application.ExeName
Sowas wie "C:\C:\Project1.exe"?

SirThornberry 8. Jan 2009 12:24

Re: Anwendung beim Windows-Start ausblenden ?
 
ehrlich gesagt verstehe ich auch nicht warum du einen Timer verwendest um die Formulare auszublenden. Wenn du willst das sie nicht angezeigt werden dann ist es besser dies von vornherein so zu machen anstelle diese erst anzeigen zu lassen um sie dann per timer wieder auszublenden.

Der Fehler wird im übrigend wohl am fehlenden Application.Run mit liegen.

thomas2009 8. Jan 2009 12:27

Re: Anwendung beim Windows-Start ausblenden ?
 
Zitat:

Zitat von Uwe Raabe
Was erwartest du denn als Ergebnis von diesem Ausdruck:

Delphi-Quellcode:
extractfilepath(application.ExeName)+Application.ExeName
Sowas wie "C:\C:\Project1.exe"?

Du kannst selbe testen :zwinker:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption:=extractfilepath(application.ExeName)+Application.ExeName;
end;
_____________

Gibt es eine andere Idee ausser Timer?

SirThornberry 8. Jan 2009 12:29

Re: Anwendung beim Windows-Start ausblenden ?
 
hat er und daraus resultiert seine Frage. Denn genau das von ihm beschriebene Beispiel müsste dabei raus kommen :)

nahpets 8. Jan 2009 12:41

Re: Anwendung beim Windows-Start ausblenden ?
 
Hallo,

der Dateiname ist bestimmt strubbelig, wobei mir schleierhaft ist, wieso Windows mit dem Eintrag das Programm überhaupt starten kann, oder resultiert die Fehlermeldung daraus, dass Windows nicht weiß, was es hier starten soll und deshalb eine Fehlermeldung ausgibt :?:

Ausser Timer:
Delphi-Quellcode:
procedure HideForms;
begin
  Form2.Hide;
  Form1.Hide;
end;

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  if Paramstr(1) = 'nebenuhrbinich' then HideForms
  else Form1.Caption:=Paramstr(1);
  Application.Run;
end.

Uwe Raabe 8. Jan 2009 13:04

Re: Anwendung beim Windows-Start ausblenden ?
 
Sowas in der Art könnte auch ganz hilfreich sein:

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  if Paramstr(1) = 'nebenuhrbinich' then begin
    Application.ShowMainForm = False;
    Form1.Visible := false;
  end
  else
    Form1.Caption:=Paramstr(1);
  Application.Run;
end.

thomas2009 8. Jan 2009 19:33

Re: Anwendung beim Windows-Start ausblenden ?
 
Es hat gekappt mit diese Code:
Delphi-Quellcode:
procedure HideForms;
begin
  Form2.Hide;
  Form1.Hide;
// Form2.Timer1.Enabled:=true; // geht auch genauso
Application.Run; {habe ich nachträglich hinzugefügt, da das Programm wieder beim Starten einen Fehler verursacht und musste beendet werden}
end;

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  if Paramstr(1) = 'nebenuhrbinich' then HideForms
  else Form1.Caption:=Paramstr(1);
  Application.Run;
end.
Das lag also wie @SirThornberry vermutet hat

Mit dem Timer klappt auch jetzt, nachdem ich den seine Interwahl erhöht habe


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 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