Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm unsichtbar starten (https://www.delphipraxis.net/152599-programm-unsichtbar-starten.html)

Cogito 29. Jun 2010 10:53

Programm unsichtbar starten
 
Hallo zusammen,

ich möchte ein Programm schreiben, dass mittels Taskplaner mit Kommandozeilenparameter unsichtbar gestartet werden soll, bestimmte Dinge erledigt und sich selbst nach Erledigung wieder beendet. Es soll eine Form beinhalten, weil ich einige Komponenten benötige, aber wie gesagt, ein User sollte davon nichts mitbekommen. Das mit dem Taskplaner ist kein Problem, mein Programm wird mit dem richtigen Parameter aufgerufen, ebenso hab ich im Quelltext der Anwendung Application.ShowMainForm auf False gesetzt. Was ich aber nicht hinbekomme ist, wo ich den Quelltext für die Erledigung der Aufgaben einfügen soll? Ich habe das OnCreate Ereignis benutzt, aber da kommt immer eine Schutzverletzung, und das Programm beendet sich am Ende nicht. Hat hier jemand einen Vorschlag (ausser hierfür einen Dienst zu schreiben:))?

Luckie 29. Jun 2010 11:11

AW: Programm unsichtbar starten
 
Zitat:

Zitat von Cogito (Beitrag 1032245)
Ich habe das OnCreate Ereignis benutzt, aber da kommt immer eine Schutzverletzung, und das Programm beendet sich am Ende nicht. Hat hier jemand einen Vorschlag (ausser hierfür einen Dienst zu schreiben:))?

Ja, zeig uns doch mal den Quellcode.

hoika 29. Jun 2010 11:56

AW: Programm unsichtbar starten
 
Hallo,

zum Beenden nimm folgendes

Delphi-Quellcode:
PostMessage(Handle, WM_CLOSE, 0, 0);
Als Holzhacker get auch

Delphi-Quellcode:
Halt;
Zur Schutzverletzung -> siehe mein Vorschreiber.

Kann es viell. sein, dass die Exe in einem anderen Verzeichnis gestartet wird als beim Debugger ?
Du kannst unter Start - Parameter deinen "AutoStart"-Parameter angeben und in der IDE testen.


Heiko

Agares 29. Jun 2010 12:55

AW: Programm unsichtbar starten
 
Das Problem was du anscheinend hast ist, dass die anderen Komponenten die du auf das Form gelegt hast natürlich noch nicht initialisiert sind wenn du die Verarbeitung im OnCreate starten willst.

Ich hab schonmal gesehen dass jemand nen Timer auf das Form gelegt hat und in dessen OnTimer dann die Verarbeitung gestartet wurde.

frei nach dem Motto:

Delphi-Quellcode:
procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := false;
  //Starte Verarbeitung
end;
Dafür musst du einfach das enabled auf true setzen und als Intervall 500 ms oder so eingeben je nachdem wie lang das Form zum initialisieren brauch.

Ist vieleicht nicht die Feine Englische Art Funktioniert aber.

Bummi 29. Jun 2010 13:04

AW: Programm unsichtbar starten
 
Delphi-Quellcode:
procedure TForm5.FormActivate(Sender: TObject);
begin
   HideTimer.enabled := true;
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
  Left := - Width ;
end;

procedure TForm5.HideTimerTimer(Sender: TObject);
begin
  HideTimer.enabled := false;
  Hide;
end;

DeddyH 29. Jun 2010 13:23

AW: Programm unsichtbar starten
 
Könnte man nicht einfach eine Konsolenanwendung nehmen und die Komponenten zur Laufzeit erzeugen?

Deep-Sea 30. Jun 2010 08:35

AW: Programm unsichtbar starten
 
Zitat:

Zitat von DeddyH (Beitrag 1032308)
Könnte man nicht einfach eine Konsolenanwendung nehmen [...]

Muss ja nicht einmal eine Konsolenanwendung sein ...
Delphi-Quellcode:
program DemoProject;

uses
  ...;

begin
  // Hier den Code einfügen.
end.
Das sollte sogar reichen. Dialogfelder und andere modale Formulare kann man trotzdem anzeigen, wenn man's braucht :-D

DeddyH 30. Jun 2010 08:55

AW: Programm unsichtbar starten
 
Meinte ich eigentlich auch. Ich mach das immer über "Neu - Konsolenanwendung" und lösche dann die Zeile {$APPTYPE CONSOLE} wieder raus ;)

Luckie 30. Jun 2010 09:12

AW: Programm unsichtbar starten
 
Man sollte allerdings berücksichtigen, dass manche Komponenten das Application Objekt benötigen, wie zum Beispiel die Indies, welches man bei einer Konsolenanwendung nicht hat.

DeddyH 30. Jun 2010 09:17

AW: Programm unsichtbar starten
 
Da hilft nur ausprobieren. Zumindest wäre es IMO einen Versuch wert, denn was soll ich den ganzen Forms-Ballast mitschleppen, wenn ich ihn gar nicht brauche?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz