vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Callback/Delegat Problem 
Autor: Schü
Datum: 11.12.06 11:41

Hallo Leute!

Ich hoffe Ihr könnt mir helfen, da das folgende Problem für mich nicht lösbar scheint.
Ich hatte schon in diversen anderen Foren probiert, allerdings hab' ich's nicht gerafft oder ich hab's nich richtig erklärt.
Es geht darum:
Eine fremde Anwendung (WhereIsIt) www.whereisit-soft.com gibt pfiffigen Programieren die Möglichkeit eigene
Plugins (.dll) für diese Anwendung zu schreiben und in das Hauptprogramm einzubinden. WhereIsIt.exe ist in Delphi programiert.
Ich versuche nun krampfhaft ein Programmgerüst mit VB 2005 Express zu erstellen, um diese Kommunikation zu ermöglichen. Der eigentliche Code,
den meine DLL enthällt ist eigentlich bereits fertig.

Im Prinzip benötigt mein Plugin einige vorgeschriebene Funktionen und Callback-Prozeduren.
Um das ganze abzukürzen hier eine Funktion und ein Callback zur Verdeutlichung:

<The RegisterDescPlugins function is called during module initialization. Description module is expected to provide WhereIsIt
with information about available description plugins in this module. RegisterDescPlugins function receives as a parameter the
address of callback function to be used for registering plugins. A function with this name must be exported from your DLL file
for WhereIsIt to accept it as a description module. >

VOID RegisterDescPlugins(
PROC lpRegisterPlugin, // pointer to a callback function
);

<The RegisterPlugin function is provided by WhereIsIt, and is received as a parameter with the RegisterDescPlugins function.
Your module will call RegisterPlugin from the RegisterDescPlugins function, once for each description plugin available in your module.
Parameters to this function will provide everything WhereIsIt needs to know about the specified plugin.>

INT RegisterPlugin(
WORD wPluginID, // unique plugin's ID inside your description module
BYTE byPluginType, // specifies plugin type
LPTCSTR lpszPluginName, // specifies the name of the plugin, as visible to users
LPTCSTR lpszPluginMask, // address of buffer to store plugin's target file masks
PROC lpConfigProc // address of function used to configure plugin
);


Also ich verstehe das folgendermaßen: Meine DLL braucht eine Sub, der ein Funktionszeiger übergeben wird.
Diese Callback-Funktion des externen Programms muß ich nun aufrufen mit entsprechenden Parametern. Das muß ich aber je
nach Anzahl der in meiner DLL enthaltenen Module mehrfach machen. D.H. nicht sofort sondern in einer getrennten Prozedur
hier 'RunCallback'


ich hab also folgendes in .NET 2.0 gemacht:

Public Delegate Function RegisterCallback(ByVal wPluginID as Int32, _
ByRef byPluginType as Int32,<MarshalAs(UnmanagedType.LPTStr)> ByRef lpszPluginName as String, _
<MarshalAs(UnmanagedType.LPTStr)> ByRef lpszPluginMask as String,ByVal lpConfigProc as Int32) as Int32

Public Sub RegisterDescPlugins(ByVal lpRegisterPlugin as Int32)
'Hier Callback's aufrufen...
RunCallback
End Sub

Private Sub RunCallback
'Übergabe der Parameter an externe Prozedur...

'Wie????

End Sub

Public Sub ConfigMyPlugin()
'....
End Sub

Aber wie rufe ich die Callback-Funktion des externen Programms auf, dessen Addresse mir
in der Sub 'RegisterDescPlugins' übergeben wird???


Schü
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Callback/Delegat Problem840Schü11.12.06 11:41
Re: Callback/Delegat Problem390Schü11.12.06 11:46

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel