AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Fensterposition/-größe einer fremden Anwendung
Thema durchsuchen
Ansicht
Themen-Optionen

Fensterposition/-größe einer fremden Anwendung

Offene Frage von "MuTzE"
Ein Thema von MuTzE · begonnen am 20. Okt 2006 · letzter Beitrag vom 20. Okt 2006
Antwort Antwort
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#1

Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 15:27
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?
A8N32-SLI Deluxe | AMD 64 X2 3800+ @ 2700 MHz | Corsair TWINX1024-3200XL @ 270 MHz | ASUS EN7800GTX @ 490/1300 | Samsung SP2504C | Plextor PX-712SA | Logitech UltraX Media Keyboard | Razer Copperhead Chaos Green | Razer eXactMat | Sennheiser PC150
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#2

Re: Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 15:33
Wenn Du das Handle des Fensters hast: GetWindowRect
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#3

Re: Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 15:50
Also das mit der Größe wäre ja dann erledigt, aber wie bestimme ich die Position des Fensters, das ist wichtiger.
A8N32-SLI Deluxe | AMD 64 X2 3800+ @ 2700 MHz | Corsair TWINX1024-3200XL @ 270 MHz | ASUS EN7800GTX @ 490/1300 | Samsung SP2504C | Plextor PX-712SA | Logitech UltraX Media Keyboard | Razer Copperhead Chaos Green | Razer eXactMat | Sennheiser PC150
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#4

Re: Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 16:08
Die Position steht in der Rect.Left und Rect.Top

Oder meinst Du die Position in der Z-Order?
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#5

Re: Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 16:17
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;
A8N32-SLI Deluxe | AMD 64 X2 3800+ @ 2700 MHz | Corsair TWINX1024-3200XL @ 270 MHz | ASUS EN7800GTX @ 490/1300 | Samsung SP2504C | Plextor PX-712SA | Logitech UltraX Media Keyboard | Razer Copperhead Chaos Green | Razer eXactMat | Sennheiser PC150
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

Re: Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 16:28
Zitat von MuTzE:
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;

Bei mir gehts!
Delphi-Quellcode:
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;
gruß
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#7

Re: Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 16:41
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?
A8N32-SLI Deluxe | AMD 64 X2 3800+ @ 2700 MHz | Corsair TWINX1024-3200XL @ 270 MHz | ASUS EN7800GTX @ 490/1300 | Samsung SP2504C | Plextor PX-712SA | Logitech UltraX Media Keyboard | Razer Copperhead Chaos Green | Razer eXactMat | Sennheiser PC150
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#8

Re: Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 16:50
Hier im Forum suchenFindWindow

PS: Neue Frage: Neuer Thread
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#9

Re: Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 17:43
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?
A8N32-SLI Deluxe | AMD 64 X2 3800+ @ 2700 MHz | Corsair TWINX1024-3200XL @ 270 MHz | ASUS EN7800GTX @ 490/1300 | Samsung SP2504C | Plextor PX-712SA | Logitech UltraX Media Keyboard | Razer Copperhead Chaos Green | Razer eXactMat | Sennheiser PC150
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

Re: Fensterposition/-größe einer fremden Anwendung

  Alt 20. Okt 2006, 17:52
Zitat:
Aber wie jetz den Namen der anderen Anwendung herausfinden?
Hier im Forum suchenGetWindowText
Pufferlänge kannst du über Hier im Forum suchenGetWindowTextLength in erfahrung bringen

gruß
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:26 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