AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mitn Hook?

Ein Thema von Meta777 · begonnen am 30. Mai 2005 · letzter Beitrag vom 3. Jun 2005
 
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Probleme mitn Hook?

  Alt 30. Mai 2005, 13:31
Hallo DP ,

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"
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
  Mit Zitat antworten Zitat
 


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 06:57 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