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
Antwort Antwort
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
Benutzerbild von Interceptor
Interceptor

Registriert seit: 28. Mai 2004
Ort: Würzburg
118 Beiträge
 
Delphi 6 Professional
 
#2

Re: Probleme mitn Hook?

  Alt 30. Mai 2005, 14:05
Zitat:
Ich hab was von nen Tutorial von Asserbad gelesen, konnte es aber nicht finden.
Voilá:
Assarbad's Hook Tutorial
David
~ Nichts ist wahr, alles ist erlaubt ~
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#3

Re: Probleme mitn Hook?

  Alt 30. Mai 2005, 14:47
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.
  Mit Zitat antworten Zitat
Meta777

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

Re: Probleme mitn Hook?

  Alt 1. Jun 2005, 11:22
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
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#5

Re: Probleme mitn Hook?

  Alt 1. Jun 2005, 11:51
"subclassing" - nicht zuverwexeln mit OOP Subclassing </senf>
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#6

Re: Probleme mitn Hook?

  Alt 1. Jun 2005, 12:14
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?
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Meta777

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

Re: Probleme mitn Hook?

  Alt 3. Jun 2005, 15:33
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
  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 05:19 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