![]() |
Fensterposition/-größe einer fremden Anwendung
Hallo,
ich möchte eine fremde Anwendung fernsteuern und brauche dafür die Position des Fensters auf dem Desktop, da ich das Handle eines Menüreiters nicht ermitteln kann. Halt so ein Skinproggy. Kann mir da jemand helfen? |
Re: Fensterposition/-größe einer fremden Anwendung
Wenn Du das Handle des Fensters hast: GetWindowRect
|
Re: Fensterposition/-größe einer fremden Anwendung
Also das mit der Größe wäre ja dann erledigt, aber wie bestimme ich die Position des Fensters, das ist wichtiger.
|
Re: Fensterposition/-größe einer fremden Anwendung
Die Position steht in der Rect.Left und Rect.Top :zwinker:
Oder meinst Du die Position in der Z-Order? :gruebel: |
Re: Fensterposition/-größe einer fremden Anwendung
Die Position auf dem Desktop!
Ich kann komischer weise nehmen was ich will, ich bekomme immer 512 und 384 raus! Egal wie oft ich das Fenster verschiebe. Selbst wenn ich nach meiner Anwendung suche! Oder mache ich was falsch?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var TheWindowHandle: THandle; aRect: TRect; begin ... GetWindowRect(TheWindowHandle, aRect); label1.Caption := IntToStr(aRect.Left); label2.Caption := IntToStr(aRect.Top); end; |
Re: Fensterposition/-größe einer fremden Anwendung
Zitat:
Bei mir gehts!
Delphi-Quellcode:
gruß
procedure TForm1.Button1Click(Sender: TObject);
var TheWindowHandle: THandle; aRect: TRect; begin TheWindowHandle := self.Handle; GetWindowRect(TheWindowHandle, aRect); label1.Caption := IntToStr(aRect.Left); label2.Caption := IntToStr(aRect.Top); end; |
Re: Fensterposition/-größe einer fremden Anwendung
Hm wenn ich es so mache gehts bei mir auch. Komisch.
Ich habe diesen Code benutzt um an das Handle des Fensters zu kommen:
Delphi-Quellcode:
function EnumWindowsProc(hWindow: hWnd; lParam: LongInt): boolean; stdcall;
var lpBuffer: PChar; WindowCaptionFound: boolean; ClassNameFound: boolean; begin GetMem(lpBuffer, 255); result:=true; WindowCaptionFound:=false; ClassNameFound:=false; try if GetWindowText(hWindow, lpBuffer,255)>0 then if Pos(PFindWindowStruct(lParam).Caption, StrPas(lpBuffer))>0 then WindowCaptionFound:=true; if PFindWindowStruct(lParam).ClassName='' then ClassNameFound:=true else if GetClassName(hWindow, lpBuffer, 255)>0 then if Pos(PFindWindowStruct(lParam).ClassName, StrPas(lpBuffer))>0 then ClassNameFound:=true; if (WindowCaptionFound and ClassNameFound) then begin PFindWindowStruct(lParam).WindowHandle:=hWindow; result:=false; end; finally FreeMem(lpBuffer, sizeof(lpBuffer^)); end; end; function FindAWindow(WinCaption: string; WinClassName: string): THandle; var WindowInfo: TFindWindowStruct; begin with WindowInfo do begin caption := WinCaption; className := WinClassName; WindowHandle := 0; EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo)); result := WindowHandle; end; end; Und damit gehts irgendwie net. Hat jemand ne andere Lösung um an das Fensterhandle zu kommen? |
Re: Fensterposition/-größe einer fremden Anwendung
|
Re: Fensterposition/-größe einer fremden Anwendung
Ja toll und warum geht der scheiss nicht?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var TheWindowHandle: THandle; aRect: TRect; begin TheWindowHandle := FindWindow(PChar('TApplication'), PChar('Project1')); GetWindowRect(TheWindowHandle, aRect); label4.Caption := IntToStr(aRect.Left); label5.Caption := IntToStr(aRect.Top); end; EDIT: Gut, damit gehts. TheWindowHandle := FindWindow(PChar('TForm1'), nil); Aber wie jetz den Namen der anderen Anwendung herausfinden? |
Re: Fensterposition/-größe einer fremden Anwendung
Zitat:
![]() Pufferlänge kannst du über ![]() gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:43 Uhr. |
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