AGB  ·  Datenschutz  ·  Impressum  







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

KeyHook Irreführend

Ein Thema von EWeiss · begonnen am 12. Apr 2011 · letzter Beitrag vom 13. Apr 2011
 
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.492 Beiträge
 
Delphi 12 Athens
 
#4

AW: KeyHook Irreführend

  Alt 13. Apr 2011, 16:44
Warum ?
Wird bei mir dynamisch über loadlibrary iniziiert.
Und NUR! für meine Anwendung gedacht.
Deine Anwendung wird dann aber auch nur auf das Instrument reagieren, solange diese den Focus hat.
Eine DLL ist dafür nicht erforderlich, einen Hook innerhalb deiner Anwendung kannst du jederzeit setzen.

Die SuperClass nenn ich einfach mal so!
Verwaltet alle meine Controls "Button und Image" in einer einzigen WinProc.
Also alle Controls/Komponente oder wie auch immer die über meine DLL in der HauptAnwendung erstellt werden.
Ich halte diese Form des Anwendungsaufbaus nicht für optimal.
Wenn tatsächlich alle Nachrichten in einer WinProc landen, wird eigentlich überhaupt kein Hook benötigt.
Du bekommst alle Tastaturereignisse und entscheidest selbst ob diese an die jeweils orginale WindProc weitergegeben oder anderweitig verarbeitet werden.

MMSystem dürfte für meine zwecke reichen. Wenn man es genau benennen will "winmm.dll"
Dafür muss ich keine Midi Schnittstelle (Siehe Midi Componente) verwenden.
Ausgenommen jetzt beim konvertieren von meinem Format nach MIDI da benötige ich zumindest den Header
um die Daten Ordnungsgemäß konvertieren und abspeichern zu können.
Wenn die Daten über eine separate Schnittstelle kommen, kann die Anwendung diese empfangen und verarbeiten, ohne Rücksicht darauf, welche Anwendung gerade den Focus hat.

Der gepostete Code bezieht sich nur darauf, wie die DLL geladen wird.
Wichtig wäre aber, was macht die DLL wenn ein Ereignis eintritt, bzw. wie gibt diese das Ereignis an die Anwendung weiter. Wie reagiert deine Anwendung auf das Ereignis, das von der DLL an die Anwendung weiter gereicht wird.

Meine Button lösen kein Event mehr aus nach einem klick.
...
Meine Button bekommen nicht mehr den Focus sobald ich den Focus auf die HauptAnwendung lege.
Da schein in deiner speziellen WinProc etwas nicht so zu laufen wie es sollte.
Hier wäre auch etwas Code angebracht, insbesondere:
- Wenn eine Nachricht selbst verarbeitet wird, stimmt der Rückgabewert, werden zusammengehörige Nachrichten auch auf die selbe Weise verarbeitet (Stichwort KeyDown, KeyUp).
- Wie wird sichergestellt, dass die richtige orginale WindProc des Steuerelements aufgerufen wird, zu dem das Handle der Nachricht gehört.
- Warum wird der Focus verändert und für was dient dieses "GetFocus" in deiner SuperClass überhaupt?

Häng am besten mal das Projekt an deinen Beitrag.
  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:04 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