Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi WindowProc einer Klasse? (https://www.delphipraxis.net/62211-windowproc-einer-klasse.html)

retnyg 2. Feb 2006 19:45

Re: WindowProc einer Klasse?
 
oder probiere es mal mit klasseninstanz.handle oder .FHandle

NeoXan 2. Feb 2006 23:34

Re: WindowProc einer Klasse?
 
Also:

SetWindowText funzt, d.h. der Handle wurde richtig gefunden...nur scheint SetWindowLong nicht wirklich zu funktionieren...auch
Delphi-Quellcode:
OldWndProc := TWndProc(Pointer(GetWindowLong(WindowHandle, GWL_WNDPROC)));
nicht, denn wenn es um
Delphi-Quellcode:
if @OldWndProc <> nil then
geht, so wird die Kondition nicht erfüllt, d.h. OldWndProc ist nil...

Meine Funktion schaut so aus:

Delphi-Quellcode:
function TRONPSTransClass.RestoreHandle():boolean;
begin
  if @OldWndProc <> nil then
  begin
    SetWindowLong( WindowHandle, GWL_WNDPROC, LongInt(@OldWndProc));
    SetWindowText( WindowHandle, PChar('...'));
    Result := true;
  end;
end;

function TRONPSTransClass.InjectOwnHandle(): boolean;
begin
  if(isWindow( WindowHandle )) then
  begin
    RestoreHandle();
    OldWndProc := TWndProc(Pointer(GetWindowLong(WindowHandle, GWL_WNDPROC)));
    if @OldWndProc <> nil then
    begin
      SetWindowLong( WindowHandle, GWL_WNDPROC, LongInt(@NewWndProc));
      SetWindowText( WindowHandle, PChar('...'));
    end;
  end;
end;
siehe http://www.delphipraxis.net/internal...ct.php?t=73357

marabu 3. Feb 2006 08:37

Re: WindowProc einer Klasse?
 
Es wird wohl etwas komplizierter als ich dachte:

Win32 SDK
The SetWindowLong function fails if the window specified by the hWnd parameter does not belong to the same process as the calling thread.

Vielleicht helfen die Informationen aus diesem thread weiter: klick

marabu

TriphunEM 3. Feb 2006 10:47

Re: WindowProc einer Klasse?
 
oh also jungs ich komm jetzt hier nicht mehr nach und versteh nur bahnhof ???

also ich will die Botschaft WM_RBUTTONDOWN aus der Klasse TTBPopupWindow abfangen.

Könnt bitte jemand so nett sein und den hier geposteten code mal für mein Problem umstricken?

Wäre sehr dankbar!?

retnyg 3. Feb 2006 11:05

Re: WindowProc einer Klasse?
 
Delphi-Quellcode:
setmsghook(meineKomponente.handle);
@neoxan: wenn du das mit einem fremd-progamm machen willst musst du eine dll machen und die im zielprozess laden
CreateRemoteThread

TriphunEM 3. Feb 2006 13:27

Re: WindowProc einer Klasse?
 
äm, die Klasse TTBPopupWindow besitzt aber igrendwie kein Handle-Wert!???

Vielleicht ist es ja eine andere Klasse, bloß wie finde ich das raus?

retnyg 3. Feb 2006 16:56

Re: WindowProc einer Klasse?
 
die klasse hab ich nicht, such doch einfach im source nach hwnd oder handle
dann solltest du die entsprechende property finden

falls es sich um ein popupmenü handelt kann es jedoch gut möglich sein, dass es gar kein eigenes handle gibt

TriphunEM 3. Feb 2006 18:27

Re: WindowProc einer Klasse?
 
naja, das weiß ich ne, bloß ich weiß das WinSpy mir die Botschaft anzeigt, also muss sie auch irgendwie abfangbar sein!

marabu 3. Feb 2006 22:23

Re: WindowProc einer Klasse?
 
Hallo Frank,

als Entschädigung für das vorübergehende (und unbeabsichtigte) thread hijacking habe ich dir etwas Code in deinem ursprünglichen thread hinterlassen: klick

Grüße vom marabu

TriphunEM 4. Feb 2006 09:24

Re: WindowProc einer Klasse?
 
hi. danke, aber jetzt dreht es sich nur noch um die Toolbar2000.

Warum, habe ich dir auf dein Posting in meinem alten Thema beantwortet. Onlick und rechte Maustaste

trotzdem danke für deine mühe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz