AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Dos-Konsole über ein Delphi Programm Buttonklick schließen?
Thema durchsuchen
Ansicht
Themen-Optionen

Dos-Konsole über ein Delphi Programm Buttonklick schließen?

Ein Thema von mlspider · begonnen am 5. Mär 2005 · letzter Beitrag vom 6. Mär 2005
Antwort Antwort
mlspider

Registriert seit: 22. Okt 2003
Ort: Berlin
661 Beiträge
 
Delphi 7 Enterprise
 
#1

Dos-Konsole über ein Delphi Programm Buttonklick schließen?

  Alt 5. Mär 2005, 11:12
Hallo,

mal eine ganz banale Frage. Wie kann ich die CMD über ein Delphiprogramm per Buttonklick schließen.

Habe es wie folgt versucht:

shellExecute(0, 'CLOSE', 'cmd.exe',nil,0,0); Leider ohne Erfolg!

Achso, geöffnet wurde diese wie folgt:

shellExecute(0, 'open', 'Record\proxy.exe',PChar(edit2.text), nil, sw_show); wobei proxy.exe das auszuführende Konsolenprogramm ist und Edit2.text die Parameter enthält.


Oder anders augedrückt: wie kann man die Tastenkombiantion "STRG + C" an das geöffnete Konolenfenster übergeben?"
Mario
Handbücher haben einen hohen Heizwert!!!

http://geprellte-ebay-kaeufer.de
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Dos-Konsole über ein Delphi Programm Buttonklick schließ

  Alt 5. Mär 2005, 19:03
Hi,

schonmal die suche auspobiert

Luckie hat da in der CodeLib was gepostet, dürfte dir helfen: http://www.delphipraxis.net/internal...rozess+beenden

  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Dos-Konsole über ein Delphi Programm Buttonklick schließ

  Alt 6. Mär 2005, 10:47
Hallo, ich benutze für die Ausführung von Consolenprogrammen CreateProcess:

Starten:
Delphi-Quellcode:
var
  ProcessPriority : integer;
  StartupInfo : TStartupInfo;
  ProcessInfo : TProcessInformation;

...

CreateProcess(
    nil,
    PChar(CommandLine),
    nil,
    nil,
    True,
    ProcessPriority,
    nil,
    nil,
    StartupInfo,
    ProcessInfo);
Da CreateProcess eine Funktion ist, bekommt man einen boolschen Wert zurück, den man auswerten kann. Zum Beispiel, wenn man die Ausgabe per Pipes in ein Memo umleiten will.

Durch ProcessInfo hast Du das Handle auf den Prozess und kannst ihn so abbrechen:
TerminateProcess (ProcessInfo.hProcess, 0); Anschließend wird der Prozess geschlossen:
Delphi-Quellcode:
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
Die Variable ProcessInfo muss so deklariert werden, dass die Procedure/Function zum Erstellen und Abbrechen darauf zugreifen können.

Für die ProcessPriority verwende ich zum Beispiel folgende Werte:

Win2000/XP
IDLE_PRIORITY_CLASS = $40;
BELOW_NORMAL_PRIORITY_CLASS = $4000;
NORMAL_PRIORITY_CLASS = $20;
ABOVE_NORMAL_PRIORITY_CLASS = $8000;
HIGH_PRIORITY_CLASS = $80;
REALTIME_PRIORITY_CLASS = $100;

Win9x/ME
IDLE_PRIORITY_CLASS = $40;
NORMAL_PRIORITY_CLASS = $20;
HIGH_PRIORITY_CLASS = $80;
REALTIME_PRIORITY_CLASS = $100;

Bei StartupInfo kann man mit

StartupInfo.wShowWindow := SW_HIDE; // SW_SHOWNORMAL; zum Beispiel angeben, ob das Konsolenfenster versteckt oder als normales Fenster angezeigt werden soll.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 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