AGB  ·  Datenschutz  ·  Impressum  







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

Event aus DLL für HotSpot Nutzen

Ein Thema von Johnny123 · begonnen am 24. Jun 2019 · letzter Beitrag vom 17. Jul 2019
 
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
715 Beiträge
 
Delphi 12 Athens
 
#4

AW: Event aus DLL für HotSpot Nutzen

  Alt 24. Jun 2019, 11:53
Mahlzeit ich bin neu hier und auch neu bei Delphi

Ich habe folgendes vor und zwar will ich ein Callback für meinen HotSpot einrichten
Bzw ich habe eine Event Procedure in einer DLL dieses Event soll reagieren wenn ich meinen hotSPot auf meinem Gerät drücke!
Quasi also wie ein button allerdings krieg ich es nicht hin das Event auf den button zu Legen!
Dies soll wohlbemerkt alles in einer klasse Verwirklicht werden

Irgendwelche Tipps ?

MfG Johnny
Was exportierst Du denn aus der DLL? Kode bitte, zumindest die Deklaration der exportierten Funktion.

Ein Event handler in Delphi muss eine Methode eines Objektes sein, oft ein TNotifyevent, also vom Typ

 procedure (sender: TObject) of Object; Das "of Object" impliziert, das es sich um eine Methode eines Objektes handeln muss. Das Äquivalent einer standalone procedure mit der gleichen Signatur wäre

  procedure (self: TObject; sender: TObject); // register calling convention! self ist dabei die Addresse des Objektes, zu dem die Methode gehört, oder der Klasse selbst, bei einer class procedure.

Eine Methode kann man nicht direkt aus einer DLL exportieren, eine Prozedur mit der äquivalenten Signatur aber schon. Um die als Event handler verwenden zu können bedarf es aber eines Tricks. Es gibt einen Typ in Delphi, der eine Methode repräsentiert: TMethod.

Damit kann man einen Tnotifyevent quasi on the fly erzeugen:

Delphi-Quellcode:
var
  M: TMethod;
begin
  M.data := nil;
  M.code := GetProcaddress(dllhandle, NameDerExportiertenProzedur);
  hotspotbutton.OnClick := TNotifyEvent(M);

Der hier verwendete Wert für M.Data wird als Self-Parameter an die Prozedur übergeben. Die Prozedur in der DLL kann den Aufruf dann an eine Methode eines internen Objektes weiterleiten.
Peter Below
  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 05:10 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