AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Console in Delphiprogramm?

Ein Thema von freak4fun · begonnen am 16. Dez 2004 · letzter Beitrag vom 26. Dez 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#11

Re: Console in Delphiprogramm?

  Alt 16. Dez 2004, 15:02
Zitat von freak4fun:
Nein, da war noch nicht das richtige dabei. Gibt diese Console nicht als Komponente so wie zB das Memo?
Ich glaube in JVCL ist so eine Komponente bei.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Console in Delphiprogramm?

  Alt 17. Dez 2004, 11:26
Hallo zusammen

Ich hab mir mit Code aus dem Forum mal folgendes zusammengebastelt, um eine Konsolenanwendung innerhalb meiner Form anzuzeigen:

Delphi-Quellcode:
function RunConsoleApp(const FileName: string; const Parent: THandle): THandle;

  function EnumWindowsProc(hWnd: HWND; lParam: LPARAM): BOOL; stdcall;
  begin
    TList(lParam).Add(Pointer(hWnd));
    Result := True;
  end;

var
  SI: TStartupInfo;
  PI: TProcessInformation;
  List: TList;
  ProcessId: DWORD;
  Console: THandle;
  I: Integer;
begin
  Result:= 0;
  FillChar(SI, SizeOf(TStartupInfo), 0);
  SI.cb := SizeOf(TStartupInfo);
  SI.dwFlags := STARTF_USESHOWWINDOW;
  SI.wShowWindow := SW_HIDE;
  if CreateProcess(nil, PChar(FileName), nil, nil, False, 0, nil, nil, SI, PI) then
  try
    Console:= 0;
    List:= TList.Create;
    try
      repeat
        List.Clear;
        if EnumWindows(@EnumWindowsProc, Longint(List)) then
        begin
          for I := 0 to List.Count - 1 do
          begin
            GetWindowThreadProcessId(Longint(List.Items[I]), ProcessId);
            if PI.dwProcessId = ProcessId then
            begin
              Console:= Longint(List.Items[I]);
              Break;
            end;
          end;
        end;
      until Console <> 0;
    finally
      List.Free;
    end;
  finally
    CloseHandle(PI.hProcess);
    CloseHandle(PI.hThread);
  end;
  if Console <> 0 then
  begin
    SetParent(Console, Parent);
    SetWindowPos(Console, 0, 0, 0, 0, 0, SWP_NOSIZE or SWP_SHOWWINDOW);
    Result:= Console;
  end;
end;
Meine Frage: Wie lässt sich nun noch die Titelleiste ausblenden, damit man die Konsole nicht mehr verschieben kann?
assert(SetWindowLong(hWnd, GWL_STYLE, GetWindowLong(hWnd, GWL_STYLE) and not WS_CAPTION) <> 0); geht irgendwie nicht bei Konsolen...

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#13

Re: Console in Delphiprogramm?

  Alt 17. Dez 2004, 11:43
Titelleiste ausblenden vom Form?

BorderStyle := bsNone; mffg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Console in Delphiprogramm?

  Alt 17. Dez 2004, 11:53
Hoi

Nein, ich meine doch bei der Konsole

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#15

Re: Console in Delphiprogramm?

  Alt 17. Dez 2004, 12:19
Hm.. ich komm damit gar nicht klar.

mfg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von ogiesen
ogiesen

Registriert seit: 25. Okt 2004
Ort: Delmenhorst
43 Beiträge
 
Delphi XE3 Enterprise
 
#16

Re: Console in Delphiprogramm?

  Alt 21. Dez 2004, 23:33
Du hätest Dich Freitag nur mal nach hinten umdrehen müssen, dann hätte ich Dir zeigen können, wo Du sogar schon zwei verschiedene solcher Komponenten auf Deiner Platte hast.

Da Du ja aber eine OpenSource-Komponente für den Heimgebrauch haben wolltest, kommt von den beiden eh nur TJvCreateProcess in Frage. Wirf doch einfach mal einen Blick auf das ConsoleExample Projekt aus dem JvCreateProcess Beispiel der JVCL. Das macht ziemlich genau das, was Du wolltest.

Downloads gibt's hier:
http://prdownloads.sourceforge.net/j...a.zip?download
http://jvcl.sourceforge.net/daily/JVCL3-2004-12-21.zip
(beides benötigt)
Beide nebeneinander auspacken und dann nacheinander jcl/Install.bat und jvcl/Install.bat ausführen. Sollte eigentlich klappen. Ich installier selbst allerdings immer direkt aus CVS anstatt von den ZIPs und für den Firmengebrauch verwenden wir unsere ganz eigenen Packages. Garantieren tu ich also für nix.

Das ist zwar ein ziemlich happiger Download für so ein kleines Problem (ca. 22 MB alles zusammen), aber im fertigen Programm landet ja hinterher nur ein kleiner Bruchteil und der Rest der beiden Bibliotheken sollte ohnehin auf keinem (Delphi-)Entwicklerrechner fehlen.

Viel Glück, Frohes Fest und Guten Rutsch!
Oliver Giesen
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#17

Re: Console in Delphiprogramm?

  Alt 3. Jan 2005, 10:16
*hehe* Danke!

mfg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von LoRd-MuldeR
LoRd-MuldeR

Registriert seit: 9. Okt 2005
Ort: Somewhere over the Slaughterhouse
132 Beiträge
 
Delphi 7 Professional
 
#18

Re: Console in Delphiprogramm?

  Alt 26. Dez 2005, 02:41
Ich hab leider die Erfahrung gemacht, dass die Umleitung des Konsolen-Output nur bei bestimmten Konsolen-Programmen funktioniert. Manchmal wird gar nix oder mit starker Verzögerung ausgegeben und manchmal geht deine CPU-Verbauch der GUI Anwendung auf 99% hoch (z.B. wenn das Konsolenprogramm alle paar Millisekunden neue Startus-Infos ausgibt)

Naja, aber bisher is JvCreateProcess der einzige Weg, der halbwegs zuverlässig funktioniert...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 09:54 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