Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Probleme mitn Hook? (https://www.delphipraxis.net/46715-probleme-mitn-hook.html)

Meta777 30. Mai 2005 13:31


Probleme mitn Hook?
 
Hallo DP :hi: ,

vorne weg gesagt habe ich schon einiges hier im Forum über Hooks gelesen...

Ich habe eine von TPanel abgeleitete Kompo die als Titelleisten-Ersatz fungiert und welche ein Hook auf die Form.WindowProc hat.

im Create meiner Kompo tu ich folgendes:
Delphi-Quellcode:

  tmp := GetParentForm(Self);
  if tmp <> nil then begin
    FParentForm := TForm(tmp);
    CreateIconData;//tray icon
    if not (csDesigning in ComponentState) then begin
      FPOldParentFormProc := FParentForm.WindowProc;//FPOldParentFormProc ist TWndMethod;
      FParentForm.WindowProc := NewProc;
    end;
    Caption := FParentForm.Caption;
  end;
Die "NewProc" sieht so aus:

Delphi-Quellcode:
procedure TDaSysBtns.NewProc(var Message: TMessage);
var
  WorkArea: TRect;
begin
  case Message.Msg of
    WM_USER_ICONMSG: begin
      case Message.lParam of
        WM_LBUTTONDBLCLK: begin
          FParentForm.Show;
          // Icon nur anzeigen wenn Fenster minimiert
          Shell_NotifyIcon(NIM_DELETE, @FIconData);
        end;
      end;//Message.lParam-case
    end;
    WM_GETMINMAXINFO: begin//da maximieren ohne biMaximize über Taskbar maximiert
      if not (csDesigning in FParentForm.ComponentState)
      AND (FParentForm.WindowState = wsMaximized) then begin//nur bei maximized!
        if SystemParametersInfo(SPI_GETWORKAREA, 0, @WorkArea, 0) then begin
          with WorkArea do begin
            pMinMaxInfo(Message.LParam).ptMaxSize.Y := Bottom+6;
          end;
        end;
      end else begin
        FPOldParentFormProc(Message);// alten Message-Handler rufen
      end;
    end;
    else begin
      FPOldParentFormProc(Message);// alten Message-Handler rufen
    end;
  end;//message.msg-case
end;
Mein Problem ist das manchmal "komische Sachen passieren" :witch:
Das irgendwelche Messages an Controls gesendet werden. Vorhin wurde ein "Enter" an nen TEdit gesendet (Tastatur wurde nicht einmal angeschaut...)?! Auch hat ich Probleme mit dem Enablen eines deaktivierten Buttons - Es ging einfach nicht :?:

Ich hab was von nen Tutorial von Asserbad gelesen, konnte es aber nicht finden.
Vielleicht ist mein Source auch buggy? Oder ich hab irgendwas nicht beachtet?

Bitte helft mir.

Gottes Segen

Interceptor 30. Mai 2005 14:05

Re: Probleme mitn Hook?
 
Zitat:

Ich hab was von nen Tutorial von Asserbad gelesen, konnte es aber nicht finden.
Voilá:
Assarbad's Hook Tutorial

Olli 30. Mai 2005 14:47

Re: Probleme mitn Hook?
 
Wie ich deinem Source entnehme, arbeitest du aber garnicht mit Fensterhooks (wie ich sie in meinem Tutorial beschreibe). Mir scheint vielmehr, daß du Informationen über "Subclassing" suchst. Vielleicht findest du da was in Luckies Win32-API-Tutorials.

Meta777 1. Jun 2005 11:22

Re: Probleme mitn Hook?
 
Hallo,

danke für die Antworten!
Jetzt weiß ich immer hin schonmal das ich "subclassing" mache... Hab auch ma einwenig im forum darüber gesucht und mir Luckie's Tutorial durchgelesen (das Subclassing Kapitel...).
Jedoch kann ich auch im nachhinein nichts "Falches" an meinen Source feststellen?!
das mit den inaktiven Button hab ich gelöst, das Problem war der Button selbst...
das andere Problem, dass mit den "Enter", kann ich mir aber nicht erklären. :?

Falls ihr noch irgendwas "Falsches" am Source findet oder nen Tipp habt, sagt es mir bitte.

Danke und Gottes Segen euch

barf00s 1. Jun 2005 11:51

Re: Probleme mitn Hook?
 
"subclassing" - nicht zuverwexeln mit OOP Subclassing </senf>

jim_raynor 1. Jun 2005 12:14

Re: Probleme mitn Hook?
 
Zitat:

Zitat von Meta777
Hallo,

danke für die Antworten!
Jetzt weiß ich immer hin schonmal das ich "subclassing" mache... Hab auch ma einwenig im forum darüber gesucht und mir Luckie's Tutorial durchgelesen (das Subclassing Kapitel...).
Jedoch kann ich auch im nachhinein nichts "Falches" an meinen Source feststellen?!
das mit den inaktiven Button hab ich gelöst, das Problem war der Button selbst...
das andere Problem, dass mit den "Enter", kann ich mir aber nicht erklären. :?

Falls ihr noch irgendwas "Falsches" am Source findet oder nen Tipp habt, sagt es mir bitte.

Danke und Gottes Segen euch

Verwechselst du vielleicht Enter mit MouseEnter. Das heisst, wenn der Mauszeiger auf ein Control bewegt wird?

Meta777 3. Jun 2005 15:33

Re: Probleme mitn Hook?
 
Zitat:

Zitat von jim_raynor
Verwechselst du vielleicht Enter mit MouseEnter. Das heisst, wenn der Mauszeiger auf ein Control bewegt wird?

Nein,
das TEdit funktioniert so das in OnChange eine procedure ausgelöst wird, wenn im TEdit "Enter" (#13 / VK_RETURN) gedrückt wird.

Obwohl die Tastatur nicht angefasst wurde, wird diese procedure ausgefürt...

Gottes Segen


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 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