Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   FreePascal "Program" versteckt ausführen (https://www.delphipraxis.net/164571-program-versteckt-ausfuehren.html)

thomasschaf 18. Nov 2011 19:09


"Program" versteckt ausführen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

bisher habe ich meistens nur Anwendungen, also grafische Projekte geschrieben.

Wie kann ich ein "Program" versteckt ausführen, sodass sich nicht das Konsolenfenster (cmd) öffnet ?

Die einzige Möglichkeit, die ich bisher gefunden habe, und doch gar nicht so unschön ist, wäre die folgende:
Delphi-Quellcode:
ShowWindow(GetForeGroundWindow, SW_HIDE)
Ich suche nach einer ähnlichen Methode wie "ShowMainForm", die es hier aufgrund der fehlenden Form nicht zu geben scheint.

Gruß,
THOMAS

himitsu 18. Nov 2011 19:25

AW: "Program" versteckt ausführen
 
Wie wäre es, wenn du eine VCL-App schreibst, aber keine Forms erstellst?

blackfin 18. Nov 2011 19:42

AW: "Program" versteckt ausführen
 
Einfach in die .dpr (bzw. lpr heisst die beim Lazarus glaub ich) nach "Application.Initialize" a bissl Code schreiben...ohne Form, ohne Apptype Console....voilá!

Delphi-Quellcode:
program VeryEliteHiddenProgram;

uses
 WhatItShouldUse,...
;

{$R *.RES}

begin
  Application.Initialize;
  // here comes the very elite-like hidden code!!!....
end.
Aber vorsicht...geht nach Abarbeitung gleich wieder zu die Gute! :-)

Bernhard Geyer 18. Nov 2011 20:08

AW: "Program" versteckt ausführen
 
Bedenke aber das verstecke normale Anwendungen des öfteren von Virenscanner per Verhaltenserkennung als gefährlich eingestuft werden und u.U. am Ausführen gehindert werden.

thomasschaf 18. Nov 2011 20:43

AW: "Program" versteckt ausführen
 
Ok, habe mich nun für blackfins Lösung entschieden.
Funktioniert wirklich gut.

Danke sehr.

borstenei 19. Nov 2011 09:57

AW: "Program" versteckt ausführen
 
oder so
Delphi-Quellcode:
var owner:thandle;
begin
Owner := GetWindow(handle, GW_OWNER);
ShowWindow(owner, SW_HIDE);
self.hide;
end;

Delphi-Laie 19. Nov 2011 12:10

AW: "Program" versteckt ausführen
 
Das ist dann doch aber nicht vor dem Taskmanager, Prozeßeplorer & Co. versteckt?!

Derlei Systemüberwachungsprogramme werden von mir und wohl auch von vielen anderen tagtäglich benutzt. Da nützt formular- oder konsolenfensterlosigkeit kein bißchen.

Luckie 19. Nov 2011 12:14

AW: "Program" versteckt ausführen
 
Warum muss es überhaupt versteckt sein?

DeddyH 19. Nov 2011 12:34

AW: "Program" versteckt ausführen
 
Wenn ich ein Programm schreibe, das ohne jegliche Interaktion auskommt, dann erstelle ich (allerdings unter Delphi) eine neue Konsolenanwendung und lösche einfach die Compilerdirektrive {$APPTYPE CONSOLE}.

kuba 19. Nov 2011 14:10

AW: "Program" versteckt ausführen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

angehängtes Programmbeispiel verschwindet unmittelbat nach Programmstart und ist per ALT+TAB nicht mehr in den Vordergrund zu bekommen.

Beenden nur über Taskmanager möglich.

kuba

PS: sorry falsche Kategorie ... Delphi, nicht FP...

Christian Seehase 19. Nov 2011 14:45

AW: "Program" versteckt ausführen
 
Zitat:

Zitat von Luckie (Beitrag 1136986)
Warum muss es überhaupt versteckt sein?

Das kann durchaus mal ganz nützlich sein, wenn man beim Login Daten vom Rechner einsammeln muss.
Speziell, wenn dieser Vorgang etwas länger dauern kann.
Manche Anwender sind recht schnell dabei ein Konsolenfenster einfach zuzumachen, vor allem, wenn scheinbar nichts passiert.

stahli 19. Nov 2011 15:09

AW: "Program" versteckt ausführen
 
Im Delphi reicht ein Eintrag im Projektquelltext:
Delphi-Quellcode:
program Test;

uses
  Forms,
  fTest in 'fTest.pas' {FormTest};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TFormTest, FormTest);
  if DebugHook = 0 then               // <------ nur wenn nicht im Debugger
    Application.ShowMainForm := False; // <------ dann Formular ausblenden
  Application.Run;
end.
Dann ist kein Fenster sichtbar und der Prozess nur noch im Projektmanager zu abzubrechen.
Im Debugmodus ist das Fenster aber komplett sichtbar.

Ob das in FreePascal so geht weiß ich aber nicht.

DeddyH 19. Nov 2011 15:29

AW: "Program" versteckt ausführen
 
Aber wozu Fenster erzeugen und verwalten, wenn man keins braucht? Oder habe ich die Anforderung falsch verstanden?

Christian Seehase 19. Nov 2011 15:57

AW: "Program" versteckt ausführen
 
Je nachdem, was es werden soll, käme auch noch ein Dienst in Frage.


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