![]() |
AW: Event aus DLL für HotSpot Nutzen
Ja richtig genau Soll halt bei Cancel die verbindung schließen bei Okay auf Unterschrift wechseln etc
Es gibt eine C-Header Datei und eine Dokumentation zu der DLL Hab noch diverse andere Funktionen aus DLL exportiert die funktionieren soweit auch super nur mit dem Ereignis hab ich halt ein Problem |
AW: Event aus DLL für HotSpot Nutzen
Zitat:
|
AW: Event aus DLL für HotSpot Nutzen
![]() Hier einmal die Header Datei als Zip weiß nicht ob man die auch direkt hier einfügen kann |
AW: Event aus DLL für HotSpot Nutzen
Zitat:
Anyway, nachdem ich erstmal die Übelkeit überwunden hatte, die mich beim Lesen von C-Kode immer befällt :wink: sieht es so aus, als wenn die DLL wirklich einen asynchronen Benachrichtigungsmechanismus unterstützt.
Code:
Das entspricht der Delphi-Deklaration
// callback typedef
typedef VOID (*CBPTR)(LONG nEvent, LPVOID pData, LONG nDataSize, LPVOID pCustomPar);
Delphi-Quellcode:
Installiert wird ein solcher callback offenbar mit Hilfe einer der beiden exportierten Funktionen
type
TStPadCallback = procedure (nEvent: Longint; pData: Pointer; nDatasize: Longint; pCustomPar: pointer); cdecl;
Code:
Die unterscheiden sich nur in der calling convention und so wie der Header aussieht ist die stdcall-Variante nur in der 32-Bit DLL verfügbar. Beide sind aus Delphi verwendbar.
extern "C" STPADLIB_API VOID STControlSetCallback(CBPTR pCallback, LPVOID pCustomPar);
extern "C" STPADLIB_API VOID __stdcall STControlSetCallback_stdcall(CBPTR pCallback, LPVOID pCustomPar); Deine Klasse sollte dann etwa so aussehen:
Delphi-Quellcode:
Du mußt mal die Dokumentation checken um zu verifizieren, wie der Callback die ID des Hotspots übergeben bekommt, da konnte ich natürlich nur spekulieren.Type TStPad = class private procedure InstallCallback; procedure UninstallCallback; public constructor create; destructor destroy; override; procedure SensorHotSpotPressed(nHotSpotID : Integer); end; // in implementation section type TStPadCallback = procedure (nEvent: Longint; pData: Pointer; nDatasize: Longint; pCustomPar: pointer); cdecl; procedure STControlSetCallback(pCallback: TStPadCallback; pCustomPar: pointer); cdecl; external 'STPadLib.dll'; procedure STControlSetCallback_stdcall(pCallback: TStPadCallback; pCustomPar: pointer); stdcall; external 'STPadLib.dll'; const // callback event IDs STPAD_CALLBACK_DISCONNECT = 0; STPAD_CALLBACK_HOTSPOT = 1; STPAD_CALLBACK_TIMEOUT = 2; STPAD_CALLBACK_SCROLL = 3; STPAD_CALLBACK_SIGNATURE = 4; procedure CallbackStub (nEvent: Longint; pData: Pointer; nDatasize: Longint; pCustomPar: pointer); cdecl; var LHotspotID: integer; begin if nEvent = STPAD_CALLBACK_HOTSPOT then if Assigned(pData) and (nDatasize = sizeof(integer)) then begin LHotspotID := pInteger(pData)^; if Assigned(pCustomPar) then TStPad(pCustomPar).SensorHotSpotPressed(LHotspotID); end; end; { TStPad } constructor TStPad.create; begin inherited; InstallCallback; end; destructor TStPad.destroy; begin UninstallCallback; end; procedure TStPad.InstallCallback; begin STControlSetCallback(CallbackStub, Self); end; procedure TStPad.SensorHotSpotPressed(nHotSpotID: Integer); begin end; procedure TStPad.UninstallCallback; begin STControlSetCallback(nil, Self); end; |
AW: Event aus DLL für HotSpot Nutzen
Sobald ich zeit habe werde ich es mal austesten
und melde mich dan wieder |
AW: Event aus DLL für HotSpot Nutzen
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo peterbelow
also habe es soweit eingebaut nur Kackt jetzt alles ab sobald ich den Hotspot drücke und kriege folgende fehlermeldung und er öffnet in Delphi das CPU fenster hab ich als Anhang mal screens von rein gesetzt |
AW: Event aus DLL für HotSpot Nutzen
Hallo,
und wo genau, an welcher Stelle des Quellcodes ? |
AW: Event aus DLL für HotSpot Nutzen
Zitat:
|
AW: Event aus DLL für HotSpot Nutzen
if nEvent = STPAD_CALLBACK_HOTSPOT then
von der zeile aus sprint er direkt zum Ende hin und als nEvent zeigt er eine zahl an 6194160 |
AW: Event aus DLL für HotSpot Nutzen
Zitat:
Ich kenne mich nicht so besonders aus mit C/C++, vielleicht habe ich die Deklaration im Header falsch interpretiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 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