ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 18.01.2000

Diese Seite wurde zuletzt aktualisiert am 18.01.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zurück...


Anzeige

(-hg) mailto:hg_addressof@aboutvb.de

Es gibt eine Reihe von API-Funktionen, die eine so genannte Callback-Adresse benötigen. Das ist die Adresse einer Prozedur bzw. Funktion in Ihrem Programm, die das Windows-System seinerseits als Antwort auf den Aufruf einer API-Funktion aufrufen soll. Wird diese Funktionsadresse direkt als Parameter einer API-Funktion erwartet, können Sie den Operator MSDN Library - VB AddressOfAddressOf zusammen mit dem Namen der Prozedur bzw. Funktion (die immer in einem Standard-Modul stehen muss) übergeben:

APIFunktion AddressOf MeineProzedur

Manchmal soll jedoch die Funktionsadresse nicht direkt als Parameter übergeben werden, sondern beispielsweise über ein Element einer benutzerdefinierten Variablen. Elemente, die eine Funktionsadresse aufnehmen sollen, sind als Datentyp Long deklariert. Leider können Sie den Operator AddressOf nur in Verbindung mit einem Funktionsaufruf verwenden - eine Zuweisung an eine Variable, oder eben an ein Element einer benutzerdefinierten Variablen, wird von Visual Basic zurückgewiesen:

Type MeineVariable
'  ...
  ProcAddress As Long
'  ...  
End Type

MeineVariable.ProcAddress = AddressOf MeineProzedur

Da es Visual Basic allerdings nicht interessiert, ob die Parameter-Übergabe an eine API-Funktion erfolgen soll, oder an eine Funktion in einem VB-Programm, können wir den benötigten Long-Wert auf einem kleinen Umweg, nämlich über eine Hilfsfunktion erhalten. Dieser Hilfsfunktion GetAddressOf wird wie von VB erwartet mit dem Operator AddressOf der Prozedur- bzw. Funktionsname übergeben. Sie gibt den aus ihrer Sicht eingehenden Long-Wert als Funktionsergebnis zurück, den Sie dann beliebig verwenden können.

Public Function GetAddressOf(ByVal AddressOfProc As Long) As Long
  GetAddressOf = AddressOfProc
End Function

Die benötigte Zuweisung sieht dann so aus:

MeineVariable.ProcAddress = GetAddressOf(AddressOf MeineProzedur)


Modul modAddressOf (modAddressOf.bas - ca. 0,3 KB)






Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer