Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Consolen-Programm in selber Console (https://www.delphipraxis.net/102638-consolen-programm-selber-console.html)

Martin K 1. Nov 2007 15:18


Consolen-Programm in selber Console
 
Hi,

ich habe ein Consolen-Programm und starte aus diesem heraus ein anderes Consolen-Programm per ShellExecute.
Nur leider wird hier ein neues Consolen-Fenster geöffnet, ich hätte es aber gerne im selben Consolen-Fenster.
Ist das irgendwie möglich?

Luckie 1. Nov 2007 15:37

Re: Consolen-Programm in selber Console
 
Nein. Die Konsole ist der Hostprozess für das Konsolenprogramm. Und eine Konsole kann immer nur ein Konsolenprogramm "hosten".

Apollonius 1. Nov 2007 16:11

Re: Consolen-Programm in selber Console
 
Ähem, Luckie? Wozu gibt es dann das Process Creation Flag CREATE_NEW_CONSOLE? Man muss einfach nur CreateProcess mit den Default-Parametern aufrufen, dann wird die Konsole vererbt.

Muetze1 1. Nov 2007 16:12

Re: Consolen-Programm in selber Console
 
Ich wollte das auch nicht so recht glauben und war kurz davor anzumerken, dass das Make Tool entgegen Luckies Aussage dies schafft.

hathor 1. Nov 2007 16:13

Re: Consolen-Programm in selber Console
 
Du kannst so oft cmd.exe IM CONSOLENFENSTER starten, wie Du willst, beenden musst Du dann JEDES Einzelne mit EXIT.

Es geht OHNE Make Tool.

Muetze1 1. Nov 2007 16:16

Re: Consolen-Programm in selber Console
 
Hä? :gruebel: Ich kapier jetzt nicht, was du mit der Aussage meinst bzw. besser: erreichen willst? Das war mir alles bewusst und bekannt und meine Aussage war nur ein Gegenbeispiel zu Luckies Aussage. Oder habe ich was nicht mitgeschnittent? :gruebel:

Martin K 1. Nov 2007 18:09

Re: Consolen-Programm in selber Console
 
So, danke erstmal für eure Antworten.

Also das hat soweit geklappt:
Zitat:

Zitat von Apollonius
Man muss einfach nur CreateProcess mit den Default-Parametern aufrufen, dann wird die Konsole vererbt.

Habe das mithilfe von der Code-Library umgesetzt und es kam dieser Code heraus:
Delphi-Quellcode:
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
  s: string;

  begin
    // s := 'Dateiname.exe "Meine Parameter"';
    WriteLN('Run:');
    WriteLN(s+#13#10);
    FillChar(StartupInfo, SizeOf(StartupInfo), #0);
    StartupInfo.cb := SizeOf(StartupInfo);
    if CreateProcess(nil, PChar(s), nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo) then
    begin
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
      if ProcessInfo.hProcess <> 0 then
        CloseHandle(ProcessInfo.hProcess);
      if ProcessInfo.hThread <> 0 then
        CloseHandle(ProcessInfo.hThread);
    end
    else
      WriteLN('Cannot run this program');
    WriteLN('Program finished');
  end.

Luckie 1. Nov 2007 21:04

Re: Consolen-Programm in selber Console
 
Zitat:

Zitat von Apollonius
Ähem, Luckie? Wozu gibt es dann das Process Creation Flag CREATE_NEW_CONSOLE? Man muss einfach nur CreateProcess mit den Default-Parametern aufrufen, dann wird die Konsole vererbt.

Oh, das habe ich nicht gewusst.


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