![]() |
ProcessCallback aus DLL
Hallo!
Ich hoffe ich bin hier richtig! Hab leider nocht nicht viel mit Klassen etc. in Delphi gearbeitet, und stell hier einfach mla die Frage ins Forum: Ich will ein grabbing tool für meine D-Box schreiben! Jemand hat eine DLL (WingrabEngine.DLL (dem ein oder andern evtl. bekannt)) erstellt, die ich dann mit meinem Tool ansprechen will! So weit so gut...grabben funzt auch, nur habe ich das Problem, dass ich es nicht schaffe die Statusinformationen aus der DLL "abzuholen". Hier hätte ich mal ein VB.NET Beispiel, vielleicht kann mit das jemand bezüglich MessageCallBack für Delphi übersetzen:
Code:
Um das Public Sub IWinGrabProcessCallback_OnMessage(ByVal sMessage As String) bzw. das implements ganz oben gehts mir eigentlich!!!
Implements IWinGrabProcessCallback
Public WinGrabLibrary As Object Public WinGrabGrabControl As Object Private Sub Form_Load() Dim video As String Dim audio(3) As String video = "C:\Recording\Kabel_00.vpes" audio(0) = "C:\Recording\Kabel_01.apes" audio(1) = "C:\Recording\Kabel_02.apes" 'z.B. zwei PES-Streams (udrec -pes) zu einem PS-Stream muxen Set WinGrabLibrary = CreateObject("WinGrabEngine.WinGrabLibrary") Set WinGrabGrabControl = WinGrabLibrary.StartMuxEx(video, -1, -1, audio, "C:\Recording\Kabel.mpg", 0, Me) End Sub Public Sub IWinGrabProcessCallback_OnMessage(ByVal sMessage As String) 'Log-Ausgabe (sMessage) wird als String übergeben End Sub Public Sub IWinGrabProcessCallback_OnStateChange(ByVal sName As String, ByVal sState As String) 'Status-Informationen (z.B. "Muxer" sName, "SCR: 00:00:00.480 Syncs: 1" sState) werden jeweils als String übergeben End Sub Hab in meinem Prog schon schon eine procedure eingefügt: procedure IWinGrabProcessCallback_onMessage(sMessage: String), aber irgendwie wird die procedure nicht aufgerufen, falls daten von der dll kommen! Irgendwo in meinem Programm (deklarationen?) muss ich ihm sicher noch sagen, dass er die procedure aufrufen soll, oder?? Hoffe das Problem ist nicht zu speziell! danke für Eure Bemühungen! MfG Steran |
Re: ProcessCallback aus DLL
sorry für doppelpost, aber ich habs leider immer noch nicht geschafft!
Was ich noch gefunden hätte: Der callback ist, wie der name schon sagt, ein callback soll heißen: Du must selber dieses interface implementieren und eine instanz des interfaces beim startmux aufruf übergeben. Die WinGrabEngine wird dann nach bedarf die methoden des von dir implementierten interfaces aufrufen. Vorsicht: der Callback erfolgt evtl. im context eines anderen threads. Das hat der Author in einem Forum gepostet, kann mir das jmd. in Delphicode übersetzen bzw. erklären? Leider kann ich ihn persönlich nicht erreichen :-(( ach ja, die DLL hab ich über "Typenbibliothek einbinden" eingebunden, mir wurden dann 3 neue Komponenten in dem ActiveX-Reiter erstellt! Danke |
Re: ProcessCallback aus DLL
so...da keiner geantwortet hat, erlaube ich mir einfach einen Doppe-Doppelpost mit der Lösung ;-) (evtl. hilfts ja jmd. der die suche benutzt und ein ähnliches prob hat!)
nach den uses:
Code:
die proceduren müssen genauso heissen, wie sie im IWinGrabProcessCallBack deklariert wurden!
type
TForm1 = class(TForm, IWinGrabProcessCallBack) . . . private { Private-Deklarationen } procedure OnMessage(const aMessage: WideString); safecall; procedure OnStateChange(const aName: WideString; const aState: WideString); safecall; beim GrabStart geben wir dann als Callback die Klasse an, in der das IWinGrabProcessCallBack Interface eingebunden wurde: z.B.
Code:
im Programm müssen nun die oben deklarierten proceduren vorhanden sein, welche die Aktion ausführen für onMessage z.B. (procedure 1:1 aus wingrabz kopiert!):
Grab := Form1.WinGrabLibrary.StartMuxGrabEx('192.168.0.25', 68, 69, 'C:\out.m2p', Form1);
Code:
MfG
procedure TForm1.OnMessage(const aMessage: WideString); safecall;
var s : string; begin s := ''; DateTimeToString(s, 'hh:nn:ss.zzz', Now); s := Format('%s %s', [s, aMessage]); frmStates.mmoMessages.Lines.Insert(0, s); end; Steran |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 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