AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WM_WINDOWPOSCHANGING abfangen

Ein Thema von MisterNiceGuy · begonnen am 31. Aug 2005 · letzter Beitrag vom 1. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 11:38
Hi, der Titel sagt eigentlich schon alles. Wie kann ich WM_WINDOWPOSCHANGING des aktuellen Fensters abfangen?

Vielen Dank schonma
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 11:42
in dem du einen messagehandler dafür schreibst
Delphi-Quellcode:
  private
    procedure FWindowPosChanging(var AMsg: TMessage); message WM_WINDOWPOSCHANGING;
[...]
procedure TForm1.FWindowPosChanging(var AMsg: TMessage);
begin
  //Hier dein Source der was machen soll wenn die Message einfliegt
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#3

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 11:44
Hmh das habe ich schon rausbekommen, aber mein Problem ist, dass ich WM_WINDOWPOSCHANGING von ALLEN Fenstern abfangen will, nicht nur die von meinem Programm.
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 11:45
dann musst du dir einen messagehook schreiben
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#5

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 11:46
brauch ich dafür ne extra dll? Haste vielleicht einen Link mit einer Anleitung dazu?
Is nämlich mein erstes mal
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 11:56
such mal im msdn nach SetWindowsHookEx (bzw. in der Delphihilfe)
MSDN-Library durchsuchenSetWindowsHookEx

Um eine DLL kommst du da wohl nicht herum (steht aber noch genaueres im msdn).
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#7

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 13:17
Ich verstehe das ganze leider nicht so recht... Auch Assabads Hook Tutorial bringt mich nicht recht weiter. Gibt es denn nicht irgendwo eine Anleitung wie man Messages abfängt und verändert etc.?
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 13:28
Ungefähr so:
Delphi-Quellcode:
var
  HookHandle: Cardinal;

function GetMsgProc(code: integer; wParam: WPARAM; lParam: LPARAM): LResult; stdcall;
begin
  if code = HC_ACTION then
    with Windows.PMsg(lParam)^ do
      if message = WM_WINDOWPOSCHANGING then
      begin
      end;

  Result := CallNextHookEx(HookHandle, Code, wParam, lParam);
end;

...
begin
  HookHandle := SetWindowsHookEx(WH_GETMESSAGE, GetmsgProc, hInstance, 0);
end;
[Nachtrag]

DLL kannst du dir sparen wenn's nur um dieselbe Anwendung geht.

[Noch'n Nachtrag]

Mit der Funktion
function FindControl(Handle: HWnd): TWinControl; aus der Unit Controls kriegst du dann zu dem Fensterhandle das Control/die Form (falls vorhanden).
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#9

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 13:47
Ne es geht ja NICHT um die gleiche Anwendung Ich will auch die Messages anderer Fenster abfangen
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: WM_WINDOWPOSCHANGING abfangen

  Alt 31. Aug 2005, 13:53
Dann musst du den Code in eine DLL packen.

Alternativ zu WH_GETMESSAGE kannst du dir auch mal den Hook WH_CBT ansehen, da gibt's dann vielleicht nicht so viel Message-Traffic.

DLL erstellen geht eigentlich ganz einfach - mach einfach ein neues Projekt mit dem "DLL-Experten". Den Code trägst du dann komplett direkt in die Projektdatei ein, ähnlich wie bei einer Konsolenanwendung.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:25 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