Hallo,
ich lade das Plugin so ein:
Dim PlugIns() As String = Directory.GetFiles(Application.StartupPath + _
strTZ + "Benutzerdaten" + _
strTZ + "Erweiterungen", "*.dll")
'Alle .DLL Plugins im Verzeichnis ermitteln
strAnwendungMitErweiterung = "Start" 'Zum einrichten
' Start aufrufen
For Each strPluginPfad In PlugIns 'Alle DLL Dateien im
' Pluginverzeichnis durchlaufen
Try
objErweiterung = ErweiterungsObjectErstellen(strPluginPfad) _
'Plugin
'Plugin laden. Als Start laden, da noch keiner Anwendung
' zugeordnet
MsgBox("a")
strPluginAnwendung = objErweiterung.PluginAnwendung _
'Anwendung speichern, in der das Plugin eingebunden
' werden soll
'Oben tritt der Fehler in Mono auf
MsgBox("b") Private Function ErweiterungsObjectErstellen(ByVal strDateiname As String) As _
Object
Dim f1 As FileStream = New FileStream(strDateiname, FileMode.Open)
Dim rawAssemblyBytes1(f1.Length) As Byte
f1.Read(rawAssemblyBytes1, 0, f1.Length)
f1.Close()
Dim a As System.Reflection.Assembly = AppDomain.CurrentDomain.Load( _
rawAssemblyBytes1)
Dim intStelle As Integer = a.FullName.ToString.IndexOf(",") 'Ende des
' Pluginnamen ermitteln. Durch , getrennt
Dim strTypeName As String = a.FullName.ToString.Substring(0, intStelle) _
'Name ausschneiden
objErweiterung = a.CreateInstance(strTypeName + "." + _
strAnwendungMitErweiterung) 'Klasse der Anwendung laden
Return objErweiterung 'Plugin zurückgeben
End Function Code im Plugin:
Public ReadOnly Property PluginAnwendung() As String Implements _
PluginInterface.OPlugStart.PluginAnwendung
Get
Return strPluginAnwendung
'Name der Anwendung
End Get
End Property Private Sub ErweiterungAnzeigen(ByVal strDateiname As String)
ErweiterungsObjectErstellen(strDateiname) 'Die auszuführende
' Erweiterung laden
strAnwendungMitErweiterung = objErweiterung.PluginAnwendung _
'Speichert, welche Anwendung Erweiterung ausführt"
Select Case strAnwendungMitErweiterung 'Aufgaben für die verschiedenen
' Formen erledigen
Case "form1"
objErweiterung.Oversion = Grundeinstellungen.strProgrammversion _
'Versionsnummer übergeben
Case "form2"
End Select
Dim bolFormanzeigen As Boolean = objErweiterung.Formanzeigen
Dim intX, intY As Integer
If bolFormanzeigen = True Then 'Wenn Plugin eine Form enthält
intX = ((frmAnmeldung.Width - objErweiterung.PluginBreite) / 2) + _
frmAnmeldung.Location.X 'programm: 800; 580
intY = (frmAnmeldung.Height - objErweiterung.PluginHöhe) / 2 + _
frmAnmeldung.Location.Y 'Position berechnen
End If
objErweiterung.PluginAusführen(intX, intY) _
'Plugin ausführen.
timPluginEnde.Interval = 1000 'Jede Sekunde abfragen, ob
' Erweierung noch läuft
timPluginEnde.Start() 'Timer starten
FormenSperren() 'Aufrufende Form sperren
End Sub Nach der Nachrichtenbox "a" tritt der Fehler auf. Die Fehlerabfrage gibt Fehlernummer 5 aus, ohne weitere Beschreibung. Unter .NET läuft alles Fehlerfrei.
MoMA sagt:
Class Programm.clsErweiterungen:
void ErweiterungAnzeigen(string) Object ObjectType.SubObj(Object, Object)
void ErweiterungAnzeigen(string) Object ObjectType.DivObj(Object, Object)
void ErweiterungAnzeigen(string) Object ObjectType.AddObj(Object, Object)
void ErweiterungAnzeigen(string) Object ObjectType.SubObj(Object, Object)
void ErweiterungAnzeigen(string) Object ObjectType.DivObj(Object, Object)
void ErweiterungAnzeigen(string) Object ObjectType.AddObj(Object, Object) |