vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Fortgeschrittene
Re: Plug-in basteln 
Autor: spike24
Datum: 25.03.05 14:35

das ist genau die richtige arbeit für freitag nach der mittagspause

grundlegendes muss Dir mal klar sein:
wenn Dein programm ein anderes Programm (ein PlugIn ist ja auch ein programm) eines anderen programieres starten soll, musst Du mit diesem ja ein paar schnittstellen definieren
dadurch das Du diesen programmierer aber nie treffen wirst
(microsoft weis ja auch nicht das ich auf die symbolleiste neben "neu" eine schalftfläche hingebastelt habe)
musst Du Dich eines mächtigen werkzeuges bedienen

Interfaces

Interfaces sind

zuerst musst Du mal ein Interface (zu deutsch: Schnittstelle) definieren
mache ein neues projekt auf
typ: Klassenbibiliothek
Name: MyInterfaces

die class1 benennst Du in PlugIn um (rechts wo Class1.vb steht)
den inhalt von Class1 löscht Du und schreibst folgendes
Public Interface PlugIn
    Function Load() As Boolean
 
    Function Show() As Boolean
 
    Function Close() As Boolean
End Interface
damit hast Du ne Schnittstellen definition erstellt
alle programme die von Deinem programm als PlugIn behandelt werden wollen, MÜSSEN diese schnittstellen einhalten

hinweis:
MyInterfaces kompilieren damit eine MyInterFaces.dll im bin-ordner entsteht

dann brauchen wir ein programm, welches PlugIns laden können
mache ein neues projekt auf
Typ: Windows-Anwendung
Name: PlugInStarter

rechtsklick auf verweise: hinzufügen: durchsuchen: MyInterfaces.dll aus dem bin-ordner
formular (Form1) im designModus öffnen
3 Buttons dazu
Name: btnLoad
Text: laden
Name: btnShow
Text: zeigen
Name: btnClose
Text: schliessen

in die code ansicht wechseln
Public Class Form1
    Inherits System.Windows.Forms.Form
 
#Region " Vom Windows Form Designer generierter Code "
 
    Private PlugIn As MyInterFaces.PlugIn
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        ' alle PlugIns müssen in den anwendungsordner -> unterordner PlugIns
        Dim PlugIns() As String = Directory.GetFiles(Application.StartupPath & _
          "\PlugIns")
        If PlugIns.Length = 0 Then
            ' kein PlugIn gefunden
        Else
            ' mindestens ein PlugIn gefunden
            ' ich berücksichtige hier auch nur eines!!
            Dim f1 As FileStream = New FileStream(PlugIns(0), FileMode.Open)
            Dim rawAssemblyBytes1(f1.Length) As Byte
            f1.Read(rawAssemblyBytes1, 0, CType(f1.Length, Integer))
            f1.Close()
            Dim a As [Assembly] = AppDomain.CurrentDomain.Load( _
              rawAssemblyBytes1)
 
            PlugIn = a.CreateInstance(a.EntryPoint.ReflectedType.Namespace & _
              ".PlugInClass")
        End If
    End Sub
 
    Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnLoad.Click
        PlugIn.Load()
    End Sub
 
    Private Sub btnShow_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnShow.Click
        PlugIn.Show()
    End Sub
 
    Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles btnClose.Click
        PlugIn.Close()
    End Sub
End Class
jetzt haben wir die anwendung die ein PlugIn aus dem AnwendungsOrdner & "\Plugins" laden kann

dann brauchen wir nur mehr das PlugIn selbst
mache ein neues projekt auf
Typ: Windows-Anwendung
Name: Egal

wir benennen Form1 in frmMain um (dateinamen rechts und die klasse selbst)
fügen eine neue klasse hinzu
Name: PlugInClass [u](dieser ist verpflichtend)
und schreiben folgenden text
Public Class PlugInClass
    Implements MyInterFaces.PlugIn
 
    Private frm As FrmMain
    Public Function Close() As Boolean Implements MyInterFaces.PlugIn.Close
        Try
            frm.Close()
            frm.Dispose()
            frm = Nothing
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
 
    Public Function Load() As Boolean Implements MyInterFaces.PlugIn.Load
        Try
            frm = New FrmMain
            Return True
        Catch ex As Exception
            Return False
        End Try
 
    End Function
 
    Public Function Show() As Boolean Implements MyInterFaces.PlugIn.show
        Try
            frm.ShowDialog()
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
End Class
kompiliern das Projekt PlugIn
kopieren die erhaltene PlugIn.exe in den ordner PlugIns von PlugInStarter.StartUpPath & "\PlugIns" (diesen ordner müssen wir logischerweise erst erstellen)

und starten die anwendung PlugInStarter
drücken nacheinander auf "laden", "zeigen", "schliessen" und freuen uns das bald ostern ist
0
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Plug-in basteln2.729Bingo25.03.05 08:55
Re: Plug-in basteln1.529Supernova25.03.05 13:06
Re: Plug-in basteln2.830spike2425.03.05 14:35
Re: Plug-in basteln1.429Bingo25.03.05 17:49
Re: Plug-in basteln1.517Supernova25.03.05 22:06
Re: Plug-in basteln1.310Bingo26.03.05 08:31
Re: Plug-in basteln1.342Robert Blutner08.01.06 12:06
Re: Plug-in basteln1.334Bingo25.03.05 14:58
Plug-ins - die Zweite1.425Bingo26.03.05 17:08
Re: Plug-ins - die Zweite1.412Supernova26.03.05 17:37
Re: Plug-ins - die Zweite1.354Bingo27.03.05 11:28
Re: Plug-ins - die Zweite1.772Bingo27.03.05 13:56
Re: Plug-ins - die Zweite1.628Supernova28.03.05 23:45
Re: Plug-ins - die Zweite1.237Matthias Friehe01.02.06 20:10
Re: Plug-ins - die Zweite1.369spike2429.03.05 08:14
Re: Plug-ins - die Zweite1.335Bingo29.03.05 12:41
Re: Plug-in basteln1.397vbtricks19.07.05 10:33
Re: Plug-in basteln1.331spike2419.07.05 10:38
Re: Plug-in basteln1.388Bingo19.07.05 10:42
Re: Plug-in basteln1.214famousf06.04.06 21:57
Re: Plug-in basteln1.334spike2407.04.06 08:23
Re: Plug-in basteln1.202famousf07.04.06 09:07
Re: Plug-in basteln1.277spike2407.04.06 09:19
Re: Plug-in basteln1.325famousf07.04.06 09:58
Re: Plug-in basteln1.265spike2407.04.06 10:17
Re: Plug-in basteln1.279famousf07.04.06 10:19
Re: Plug-in basteln1.377spike2407.04.06 10:22
Re: Plug-in basteln1.422famousf07.04.06 10:28
Re: Plug-in basteln1.294spike2407.04.06 10:32
Re: Plug-in basteln1.268famousf07.04.06 10:50
Re: Plug-in basteln1.249spike2407.04.06 10:51
Re: Plug-in basteln1.416famousf07.04.06 11:04
Re: Plug-in basteln1.198spike2407.04.06 11:17
Re: Plug-in basteln1.315Bingo07.04.06 16:58
Re: Plug-in basteln1.358dennis_8918.04.06 23:19

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-2025 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