Delphi-PRAXiS

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 exe starten befehl ausführen, schließen (https://www.delphipraxis.net/60984-exe-starten-befehl-ausfuehren-schliessen.html)

King Lui 15. Jan 2006 14:06


exe starten befehl ausführen, schließen
 
Hallo ich wollte mal was basteln, das einfach nur nen befehl ausführt und zwar das hier
Delphi-Quellcode:
procedure DisableTaskMgr(bTF: Boolean);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;

  reg.OpenKey('Software', True);
  reg.OpenKey('Microsoft', True);
  reg.OpenKey('Windows', True);
  reg.OpenKey('CurrentVersion', True);
  reg.OpenKey('Policies', True);
  reg.OpenKey('System', True);

  if bTF = True then
  begin
    reg.WriteString('DisableTaskMgr', '1');
  end
  else if bTF = False then
  begin
    reg.DeleteValue('DisableTaskMgr');
  end;
  reg.CloseKey;
end;
Ich möchte, dass wenn man das programm startet nichts davon sieht also nichts taskleiste und nicht aufm bildschirm. dann soll es den befehl
Delphi-Quellcode:
DisableTaskMgr(False);
asuführen und dannach sofort wieder schließen ich hab es dann mit demhier probiert
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowWindow( Application.Handle, SW_HIDE );
  SetWindowLong( Application.Handle, GWL_EXSTYLE,
                 GetWindowLong(Application.Handle, GWL_EXSTYLE) or
                 WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
  ShowWindow( Application.Handle, SW_SHOW );
  DisableTaskMgr(False);

  close;
end;
aber das geht nicht. wie geht es richtig?

Chrissi91 15. Jan 2006 14:10

Re: exe starten befehl ausführen, schließen
 
Also. Ich würde in die FormCreate einfach das reinschreiben. Meines Achtens versteckt es das Programm ganz.

Delphi-Quellcode:
Hide;
Dann schließ es einfach.

Delphi-Quellcode:
Close;
oder

Delphi-Quellcode:
Application.Terminate;
Ich hoffe, ich habe dich richtig verstanden. :mrgreen: :stupid:

RWarnecke 15. Jan 2006 14:11

Re: exe starten befehl ausführen, schließen
 
Packe deinen ganzen Sourcecode nur in eine Projektdatei, so das Du kein Fenster erstellst. Ich würde erst garkeine Form erstellen lassen.

Chrissi91 15. Jan 2006 14:13

Re: exe starten befehl ausführen, schließen
 
Ich sehe gerade, es geht nicht, wenn du Hide in die FormCreate schreibst. Dann schreibs einfach in einen Timer, der an ist. Interval stellst du dann auf 1.

P.S.: Hab ich vergesse. Herzlich Willkommen in der DP! :party:

ManuMF 15. Jan 2006 14:15

Re: exe starten befehl ausführen, schließen
 
@Chrissi91: Warum so kompliziert?
Application.ShowMainForm := false in formCreate oder ins Projekt, und fertig.

Gruß,
ManuMF

SirThornberry 15. Jan 2006 14:16

Re: exe starten befehl ausführen, schließen
 
anstelle von Hide sollte man in dem fall Application.ShowMainForm auf False setzen. Aber wie bereits geschreiben wurde ist es sinnvoller einfach alles in die Projektdatei zu schreiben und kein Fenster erst zu erstellen wenn man sowieso keins benötigt.

Luckie 15. Jan 2006 14:17

Re: exe starten befehl ausführen, schließen
 
Ich schließe hier erstmal, da dieses Programm wohl gegen den Kodex der DP verstößt. Dem Benutzer den Taskmanager zu deaktivieren ohne, dass dieser was davon mitbekommt ist nicht die feine Englische Art.

@King Lui: Bitte erläutere mir per PN, was du damit bezweckst bzw. was das soll.

Davon abgesehen noch ein paar Anmerkmngen um Code:
- Es fehlt der Ressourcenschutzblock mit try-finally.
- Das Registry-Objekt wird nicht wieder freigegeben.
- Man kann einen Unterschlüssel direkt öffnen, in dem man den kompletten Pfad angibt
- Überleg mal was du da im OnCreate-Ereignis probierst, du willst in das Auto einsteigen und gleichzeitig wieder aussteigen. Kann das Funktionieren?


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