vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2014
 
zurück
Rubrik: COM/OLE/Registry/DLL · Sonstiges   |   VB-Versionen: VB4, VB5, VB628.11.03
Funktion in einer DLL vorhanden?

Diesmal zeigen wir, wie sich pr?fen l?sst, ob eine DLL eine bestimmte Funktion enth?lt oder nicht.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  10.259 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8 Beispielprojekt auf CD 

Vor kurzem haben wir Ihnen gezeigt, wie sich prüfen lässt, ob eine bestimmte DLL vorhanden ist und ob es sich bei der DLL um eine Standard-DLL oder eine ActiveX-DLL handelt. Siehe hierzu auch:  Prüfen ob DLL vorhanden und DLL-Typ ermitteln

Wenn Sie sich diesen Tipp einmal ganz genau ansehen, dann entdecken Sie, dass man hiermit ebenfalls prüfen kann, ob eine bestimmte Funktion in der DLL vorhanden ist oder nicht (siehe Prüfung, ob es sich um eine ActiveX-DLL handelt).

Nachfolgende Funktion baut auf oben genannten Tipp auf und prüft die Verfügbarkeit einer DLL-Funktion.

Option Explicit
 
' Benötrite API-Deklarationen
Private Declare Function LoadLibrary Lib "kernel32" _
  Alias "LoadLibraryA" ( _
  ByVal lpLibFileName As String) As Long
 
Private Declare Function FreeLibrary Lib "kernel32" ( _
  ByVal hLibModule As Long) As Long
 
Private Declare Function GetProcAddress Lib "kernel32" ( _
  ByVal hModule As Long, _
  ByVal lpProcName As String) As Long
' Funktion in DLL vorhanden?
Public Function DLLFunctionAvail(ByVal sFile As String, _
  ByVal sProcedure As String) As Boolean
 
  Dim nHandle As Long
 
  ' DLL laden
  nHandle = LoadLibrary(sFile)
  If nHandle <> 0 Then
    ' Versuch die Adresse der Funktion zu ermitteln
    If CBool(GetProcAddress(nHandle, sProcedure)) = True Then
      ' Jepp: Funktion vorhanden
      DLLFunctionAvail = True
    End If
 
    ' Speicher wieder freigeben
    Call FreeLibrary(nHandle)
  End If
End Function

Die Funktion DLLFunctionAvail erwartet als ersten Parameter den Namen der DLL-Datei. Wird kein Pfad angegeben, wird in den Systempfaden nach der DLL gesucht. Als zweiten Parameter wird der Name der Funktion/Prozedur erwartet. Existiert die Prozedur wird TRUE zurückgegeben, andernfalls FALSE.

HINWEIS:
Bei der Angabe der zu prüfenden Funktion/Prozedur ist auf exakte Groß-/Kleinschreibung zu achten!

Beispiel:

Die Funktion SetLayeredWindowAttributes aus der User32.dll steht erst ab Windows 2000 oder höher zur Verfügung. Wenn Sie diese Funktion in Ihrer Anwendung verwenden können Sie entweder das Betriebssystem abfragen oder ab sofort auch direkt die Verfügbarkeit der Funktion prüfen.

' Prüfen, ob die Funktion "SetLayeredWindowAttributes"
' zur Verfügung steht
If DLLFunctionAvail("user32", "SetLayeredWindowAttributes") Then
  ...
End If

Dieser Tipp wurde bereits 10.259 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2014 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