Entwickler-Ecke

Sonstiges (Delphi) - KonsolenFensterHandle


Dezipaitor - Di 06.05.03 20:48
Titel: KonsolenFensterHandle
wie kriege ich das Handle meines Konsolenfensters raus, ohne die Titelleiste abzufragen?

THX


Terra23 - Di 06.05.03 22:09

Wenn ich richtig aufgepaßt habe (wenn :!: ), dann kannst du doch deinem Fenster selbst einen Namen (Handle) geben, oder? Schau mal hier [http://www.delphi-forum.de/viewtopic.php?t=10187], vielleicht hilft dir das etwas weiter. So genau kann ich es dir aber auch nicht sagen.. :-) Aber hast du vielleicht schon mal in der FAQ geschaut? Da ist vieles drin, was sehr nützlich ist. :-)


Delete - Di 06.05.03 22:32

Selbst ein Handle vergeben? Du weißt anscheinend nicht, was ein Handle ist, wozu es gebraucht wird und wie Windows damit umgeht.


Dezipaitor - Di 06.05.03 22:44

es geht mir nur darum,
das consolenfenster nach einer messagebox in den vordergrund zu holen.
aber da delphi das erstellen des konsolenfenstern komplett hinter schloss und riegel macht, und getactivewindow auch nicht funkz,
muss es doch irgendwie anders gehen, das fensterhandle zu bekommen.

nonVCL muss ich hier ausschließen, da ich in dem programm text routinen verwende, die notwendig sind.


Dezipaitor - Di 06.05.03 22:56

so nach 2h im internet stöbernd hab ich es geschafft, und etwas gefunden.

http://www.swissdelphicenter.ch/de/showcode.php?id=1205


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function GetConsoleWindow: THandle; 
var 
  S: AnsiString; 
  C: Char; 
begin 
  Result := 0; 
  Setlength(S, MAX_PATH + 1); 
  if GetConsoleTitle(PChar(S), MAX_PATH) <> 0 then 
  begin 
    C := S[1]; 
    S[1] := '$'; 
    SetConsoleTitle(PChar(S)); 
    Result := FindWindow(nil, PChar(S)); 
    S[1] := C; 
    SetConsoleTitle(PChar(S)); 
  end; 
end;


es sieht so aus, als wäre der klassenname einer konsole der titel mit dem ersten zeichen ersetzt durch ein Dollarzeichen.

ich sage nur : WOW