Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm ohne Form (https://www.delphipraxis.net/107926-programm-ohne-form.html)

ddcool 4. Feb 2008 19:16


Programm ohne Form
 
Hallo liebe DPler,

ich habe mal eine Frage. Und zwar möchte ich gerne ein Programm schreiben, dass keine Form besitzt. Ich finde es doof für simple Hintergrundaufgaben eine Form erzeugen zu müssen. Ich schätze mal das ganze realisiere ich irgendwie mit NonVLC. Habe das auch soweit alles hinbekommen. Allerding ist jetzt mein Problem, sobald die Main-Prozedur durchlaufen ist, beendet das Programm, egal ob ein Timer drin ist oder was auch immer. Wie kann ich das umgehen? Wenn ich eine Sichtbare Form habe, funktioniert das ohne Probleme.

Grüße

ddcool

freak4fun 4. Feb 2008 19:32

Re: Programm ohne Form
 
Wie wäre es mit einer Konsolenanwendung? Da hast du auch kein Formular. ;) Wenn dein Programm sich nicht beenden soll, würde ich eine Endlosschleife mit einer best. Abbruchbedingung wählen, wei zB das Drücken einer taste. :)

ddcool 4. Feb 2008 19:43

Re: Programm ohne Form
 
Jo das war auch meine Idee, allerdings möchte ich 1. keine Konsolenanwendung und 2. wüsste ich nicht, was ich in die Schleife schreiben soll, damit das <progy nicht freezed oder 100% cpu verursacht.

Grüße

ddcool

marabu 4. Feb 2008 19:46

Re: Programm ohne Form
 
Hallo,

Hintergrundaufgaben ohne Benutzer-Interaktion? Da könntest du einen Dienst implementieren.

Grüße vom marabu

ddcool 4. Feb 2008 19:57

Re: Programm ohne Form
 
Naja ich zeig euch mal den angedachten Source:

Code:
program Testus;

uses
  BlaFasel;

var
  TermApp: Boolean = False;

{$R *.res}

//------------------------------- MUST HAVE DECLARED ---------------------------

Irgendwelche Prozeduren und Funktionen

//------------------------------- MUST HAVE DECLARED ---------------------------

begin
  Tue das;
  while not TermApp do Tue irgendwas;
end.
while not TermApp do Tue irgendwas;

So der rote Teil soll halt die Endlosschleife sein. Und der Fette teil da drin muss halt was sein, was das Progyy nicht zum freezen bringt und die CPU nicht belastet.

OldGrumpy 4. Feb 2008 20:12

Re: Programm ohne Form
 
Zitat:

Zitat von ddcool
while not TermApp do Tue irgendwas;

So der rote Teil soll halt die Endlosschleife sein. Und der Fette teil da drin muss halt was sein, was das Progyy nicht zum freezen bringt und die CPU nicht belastet.

Wenn der Instruktionsteil die CPU nicht belastet, ist er doch sinnlos und kann gleich komplett samt Schleife wegoptimiert werden :mrgreen:

Vielleicht beschreibst Du mal kurz, was das Programm überhaupt so tun soll?

freak4fun 4. Feb 2008 20:20

Re: Programm ohne Form
 
Delphi-Quellcode:
var
  myTimer: TTimer;
  procedure myOnTimer(Sender: TObject);

...
 
myTimer := TTimer.Create(Self);
  with myTimer do
    begin
      OnTimer := myOnTimer;
      Interval := 1000;
      Activate := True;
    end;

...

procedure TForm1.myOnTimer(Sender: TObject);
begin
  // machwas


  Activate := not TermApp;
  // Irgendwo noch Timer freigeben
end;
Vielleicht hilft das. ;)

MrKnogge 4. Feb 2008 20:26

Re: Programm ohne Form
 
Du kannst dein Programm ja auch im Programmquelltext schreiben (Projekt -> Quelltext anzeigen), und da dann auch einfach deine Form rauslöschen.

Gruß

ddcool 4. Feb 2008 20:40

Re: Programm ohne Form
 
Also zur Funktion. In meinem Beruf bin ich Sycherheitsanalyst. Im ramen eines Projektes möchte ich überprüfen, wie sich ein System verhält, wenn es von Schadsoftware angegriffen wird. Genauer ich möchte analysieren, wie ich einen Keyboard Hook mit speziellen im Netz verfügbaren Tools erkennen und blocken kann. Das ist ja auch schön und gut, jedoch ist es blöd in seiner "Sandbox" jedes mal einen Trojaner aus dem Netz "installieren" zu müssen. Das erzeugt nur unnötig Traffic, und führ unter umständen dazu, dass die Test-VM als Bot missbraucht werden könte. Nicht mein Ziel! Also will ich mir ein Programm mit Keyboard Hook schreiben (der Hook ist kein Problem, ist aber nicht in einer dll ausgelagert, weil das echte schadsoftware meistens auch nicht macht) wlches möglichst real ist. Dazu sollte das Programm natürlich in nonVCL geschrieben sein um:

1. möglichst klein zu sein
2. hat keine schadsoftware eine Form. Wozu auch?!

Soweit so gut. Es ist wirklich nur für testzwecke und ohne kriminelle Hintergründe.

Achso einfach im Programmcode zu schreiben ist ja praktisch nonVCL und mache ich ja schon (siehe den source oben).


Grüße

ddcool

sirius 4. Feb 2008 21:08

Re: Programm ohne Form
 
Aus was wartet denn dein programm. also was ist der Auslöser, damit es beendet wird.
Normalerweise brauchst du eine Messageschleife à la
Delphi-Quellcode:
while getmessage(msg,0,0,0) do dispatchmessage(msg)
Aus der kommst du mit PostQuitMessage heraus.
Jetzt könntest du z.B. einen Timer einbauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 Uhr.
Seite 1 von 3  1 23      

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