Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Window "Fenster" Handle bekommen (https://www.delphipraxis.net/111429-window-fenster-handle-bekommen.html)

dazar_t 3. Apr 2008 11:40


Window "Fenster" Handle bekommen
 
Guten Tag...

Ich hole mir mit GetNextWindow alle akutellen Handles. Doch brauche ich glaube ich andere handles.
Mit dieser Methode bekomme ich ja den Handle wie z.B "Application.Handle" b.z.w ich kann mit diesem handle nicht mit GetWindowRect die Position herrausfinden. Wie bekomme ich nun den "anderen" Handle wie z.B "Self.Handle" mit dem ich dann auch die Position erkennen kann ?

MfG

Luckie 3. Apr 2008 11:48

Re: Window "Fenster" Handle bekommen
 
Hier im Forum suchenEnumWindows und alle unsichtbaren* Fenster(handle) "wegschmeissen".

*) MSDN-Library durchsuchenIsWindowVisible

sirius 3. Apr 2008 11:53

Re: Window "Fenster" Handle bekommen
 
Vielleicht bräuchte er auch noch EnumChildWindows. Oder eben mit Get(Next)Window und dem Parameter xyz_Child.

Luckie 3. Apr 2008 12:40

Re: Window "Fenster" Handle bekommen
 
Ich glaube, es geht ihm nur um die Toplevel-Fenster, weil er irgendwie eine Grafik auf die Fenster fallen lassen will. Also so was wie Schnee der auf den Fenstern liegen bleibt. Oder war das jemand anders? Ich gucke mal, ob ich da schnell was zusammenschreibe.

dazar_t 3. Apr 2008 12:45

Re: Window "Fenster" Handle bekommen
 
Ja genau ich will eine grafik auf ads Fenster fallen lassen. DOch leider komme ich mit EnumWindows garnicht klar ?! :cry: :freak:

Luckie 3. Apr 2008 12:54

Re: Window "Fenster" Handle bekommen
 
Ja warte. Kommt gleich was.

Luckie 3. Apr 2008 13:07

Re: Window "Fenster" Handle bekommen
 
Delphi-Quellcode:
type
  PMyEnumParam = ^TMyEnumParam;
  TMyEnumParam = record
    FMemo: TMemo;
  end;

function EnumWindowsProc(const hWnd: THandle; Param: PMyEnumParam): LongBool; stdcall;
var
  Len: Longint;
  s: string;
  rect: TRect;
begin
  Result := True;
  if not (IsWindow(hWnd) and IsWindowVisible(hWnd)) then
    Exit;
  Len := SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
  if Len > 0 then
  begin
    SetLength(s, Len);
    SendMessage(hWnd, WM_GETTEXT, Len + 1, Longint(Pchar(s)));
    GetWindowRect(hWnd, rect);
    s := s + ' TopLeft: ' + IntToStr(rect.TopLeft.X) + '|' + IntToStr(rect.TopLeft.Y) + ' BottomRight: ' + IntToStr(rect.BottomRight.X) + '|' + IntToStr(rect.BottomRight.Y);
    Param.FMemo.Lines.Add(s)
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Param: TMyEnumParam;
begin
  Param.FMemo := Memo1;
  EnumWindows(@EnumWindowsProc, LPARAM(@Param));
end;

dazar_t 3. Apr 2008 13:17

Re: Window "Fenster" Handle bekommen
 
Dankeschön genausowas habe ich gesucht :D


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