vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 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

ActiveX-Programmierung
Re: eigene Anwendung mit AddIn? 
Autor: illuminator
Datum: 10.12.02 19:46

Hi,

sorry ich komm etwas spät, aber ich denke ich kann eventuell was konstruktives beisteuern.
Ich habe mal ein kleines Proggie gemacht, das ActiveX-DLLs, die in einem bestimmten Verzechnis waren registriert hat und einen neuen Menüpunkt im Programm daraufhin erzeugt hat. Hier ein paar Code-Schnipsel:

zuerst alle DLL-Dateien eines Verzeichnisses herausfinden. Code dazu findest du in unserem Tipp & Tricks-Archiv. Dann die Dateien nacheinander mit der RegServeFunktion oder Code aus den VB@archiv Tipps&Tricks registrieren
'Hier sind die bis Plugins drin
Public plug() As Object
'Anzahl Plugins
Public pp As Long
If RegServe(PluginFile,True) = True Then 
    Redim Preserve Plug(pp)
    'Das plugin erstellen   
    Set plug(pp) = GetObject("", GetFileNameFromPath(Pluginfile" &" & _
      "".PluginClass")
    plug(pp).Plugininfo ps, pt, LanguageMode
    'Einen neuen Menüpunkt sichtbar machen
    Me.mnuplugin(pp).Caption = ps
    Me.mnuplugin(pp).Tag = pt
    Me.mnuplugin(pp).Visible = True
    pp = pp + 1
Else
    MsgBox "Plugin konnte nicht geladen werden!" & vbCrLf & vbCrLf & _
      PluginFile, vbCritical
End If
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal _
  lpLibFileName As String) As Long
Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, _
ByVal lpProcName As String) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As _
Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As _
Long
Public Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As Any, _
ByVal dwStackSize As Long, ByVal lpStartAddress As Long, ByVal lParameter As _
Long, ByVal dwCreationFlags As Long, lpThreadID As Long) As Long
Public Declare Function GetExitCodeThread Lib "kernel32" (ByVal hThread As _
Long, lpExitCode As Long) As Long
Public Declare Sub ExitThread Lib "kernel32" (ByVal dwExitCode As Long)
Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) _
  As Long
Public Const STATUS_WAIT_0 = &H0
 
Public Function RegServe(ByVal Path$, Mode As Boolean)
  Dim insthLib&, lpLibAdr&, hThd&, lpExCode&
  Dim procName$, Result&, okFlag As Boolean
 
    'DLL in den Speicher laden
    insthLib = LoadLibrary(Path)
 
    'Aktion wählen
    If insthLib Then
      If Mode Then
        procName = "DllRegisterServer"
      Else
        procName = "DllUnregisterServer"
      End If
 
      'Adresse der DLL im Speicher
      lpLibAdr = GetProcAddress(insthLib, procName)
      If lpLibAdr <> 0 Then
 
        'Aktion starten
        hThd = CreateThread(ByVal 0, 0, ByVal lpLibAdr, _
                            ByVal 0&, 0&, 0&)
        If hThd Then
          'Maximal 5 sec warten
          Result = WaitForSingleObject(hThd, 5000)
          If Result = STATUS_WAIT_0 Then
            'Vorgang erfolgreich in 5 sec beendet
            Call CloseHandle(hThd)
            okFlag = True
          Else
            '5 sec überschritten -> Thread schließen
            Call GetExitCodeThread(hThd, lpExCode)
            Call ExitThread(lpExCode)
            Call CloseHandle(hThd)
          End If
        End If
      End If
 
      'Speicher wieder freigeben
      Call FreeLibrary(insthLib)
    End If
 
    RegServe = okFlag
End Function
In dem Programm benutze ich die Plugins dann wie folgt. Sie zeigten einfach eine neue Form an.
Private Sub mnuPlugin_Click(Index As Integer)
    plug(Index).LoadPlugin LanguageMode
End Sub
Die Plugins selbst müssen hierbei wie folgt in VB erstellt werden:
- Eine ActiveX-Dll die eine Klasse enthält namens "PluginClass"
- Der Projektname muss dem Dateinamen entsprechen

Nun musst du noch verschieden Schnittstellen-funktionen definieren, die du dann über plug.<funktion> benutzt. Diese Funktionen müssen natürlcih alle Plugins haben, damit keine Fehler auftauchen.

Bye

illuminator
(Programmers don't die, they GOSUB without RETURN...)

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
eigene Anwendung mit AddIn?1.003Der Glückliche02.12.02 01:10
Re: eigene Anwendung mit AddIn?669Der Glückliche02.12.02 12:44
Re: eigene Anwendung mit AddIn?719Fex04.12.02 14:20
Re: eigene Anwendung mit AddIn?866illuminator10.12.02 19:46
Re: eigene Anwendung mit AddIn?766Fex12.12.02 10:18

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