Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln (https://www.delphipraxis.net/174403-clientheight-clientwidth-top-und-left-eines-externen-fensters-ermitteln.html)

Helmi 20. Apr 2013 15:11

ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
Hallo,

ist es möglich von einem externen Fenster "ClientWidth",
"ClientHeight", "Top" und "Left" auszulesen?
Und falls ja, wie.

Helmi 20. Apr 2013 15:17

AW: ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
Wieso fallen mir die Antworten immer erst ein, nachdem ich nen Thread erstellt habe?

Delphi-Quellcode:
var
  r: TRect;

begin
  GetWindowRect(h, r);
end;

Aphton 20. Apr 2013 23:07

AW: ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
Nja damit kriegste aber ned ClientWidth/ClientHeight sondern Width/Height (Right-Left, Bottom-Top)

Luckie 20. Apr 2013 23:34

AW: ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
Und dann kann man die Rahmendicke abziehen, die man über GetSystemmetrics abfragen kann.

Amateurprofi 21. Apr 2013 00:29

AW: ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
Zitat:

Zitat von Luckie (Beitrag 1212217)
Und dann kann man die Rahmendicke abziehen, die man über GetSystemmetrics abfragen kann.

Und was ist, wenn das Fenster eine Caption hat, und vielleicht auch ein Menu?

Ich denke
Delphi-Quellcode:
GetClientRect
wäre sinnvoller.

Luckie 21. Apr 2013 01:06

AW: ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
Kann man auch alles abfragen. Aber wenn es dafür eine schon fertige Funktion gibt, ist es natürlich einfacher diese zu benutzen.

Helmi 21. Apr 2013 10:14

AW: ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
Zitat:

Zitat von Luckie (Beitrag 1212221)
Kann man auch alles abfragen. Aber wenn es dafür eine schon fertige Funktion gibt, ist es natürlich einfacher diese zu benutzen.

Nur leider brauch ich das für ein externes Fenster - nicht für eine eigene Form...


Mit GetWindowRect ermittle ich ja das Rect des (sichtbaren) Fensters. Aber gibt es auch die Möglichkeit das Rect eines Fensters zu ermitteln, das größer ist, als der sichtbare Bereich, also mit Scrollbalken?

Wie gesagt, ich bin in einem externen Fenster

Der.Kaktus 21. Apr 2013 12:35

AW: ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
fremdes Fenster ist doch nicht anders..nur HWnd suchen und los gehts ;-)


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
    hNotepadWindow: HWND;
    lpr:TRect;
begin
    hNotepadWindow := FindWindow('notepad', nil);
    getwindowrect(hNotepadWindow,lpr);
end;

Helmi 21. Apr 2013 12:43

AW: ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
Zitat:

Zitat von Der.Kaktus (Beitrag 1212251)
fremdes Fenster ist doch nicht anders..nur HWnd suchen und los gehts ;-)


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
    hNotepadWindow: HWND;
    lpr:TRect;
begin
    hNotepadWindow := FindWindow('notepad', nil);
    getwindowrect(hNotepadWindow,lpr);
end;

das hatte ich ja selbst schon rausgefunden (siehe Post #2)

Bummi 21. Apr 2013 16:38

AW: ClientHeight, ClientWidth, Top und Left eines externen Fensters ermitteln
 
Delphi-Quellcode:
var
    hand: HWND;
    WndRect,ClntRect:TRect;
begin
    hand := FindWindow('notepad', nil);
      if handle <> 0 then
        begin
          GetWindowRect(hand,WndRect);
          Windows.GetClientRect(hand,ClntRect);
          Showmessage(Format('Window Top: %d Left: %d Right: %d Bottom %d'#13#10
                             +'Client Top: %d Left: %d Right: %d Bottom %d'#13#10
                             ,[WndRect.Top,WndRect.Left,WndRect.Right,WndRect.Bottom
                             , ClntRect.Top,ClntRect.Left,ClntRect.Right,ClntRect.Bottom]));
        end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz