Rubrik: Windows/System | 15.03.02 |
GetModuleHandle-Funktion Diese Funktion ermittelt das Modul-Handle eines geladenen Programms, einer geladener DLL oder eines geladenen ActiveX Controls (OCX). | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 13.136 |
Deklaration:
Declare Function GetModuleHandle Lib "kernel32" _ Alias "GetModuleHandleA" ( _ ByVal lpModuleName As String) As Long
Beschreibung:
Diese Funktion ermittelt das Modul-Handle eines geladenen Programms, einer geladener DLL oder eines geladenen ActiveX Controls (OCX).
Parameter:
lpModuleName | Erwartet den Namen einer Anwendung, OCX-Datei oder DLL-Datei. Dieser Name muss keinkompletter Pfad sein, da Windows diesen Namen in dem Pool der geladenen Dateien sucht. Existiert bei dem Namen keine Dateiendung so wird automatisch die Dateiendung ".dll" angehängt. Hat die Datei keine Dateiendung so muss man an dem Namen der Datei eine "." anhängen. Wird hier einleerer String übergeben, liefert die Funktion das Modul-Handle des aufrufenden Prozesses. |
Rückgabewert:
Ist die Funktion erfolgreich so liefert sie das Modul-Handle der angegebenen Datei, andernfalls gibt die Funktion "0" zurück. Für erweiterte Fehlerinformationen rufenSie die GetLastError-Funktion auf.
Beispiel:
Private Declare Function PlaySound Lib "winmm.dll" _ Alias "PlaySoundA" ( _ lpszName As Any, _ ByVal hModule As Long, _ ByVal dwFlags As Long) As Long Private Declare Function GetModuleHandle Lib "kernel32" _ Alias "GetModuleHandleA" ( _ ByVal lpModuleName As String) As Long Private Const SND_ALIAS = &H10000 ' der angegebene Name muss ein Eintrag aus der ' Win.ini unter [Sounds] sein Private Const SND_ALIAS_ID = &H110000 ' der angegebene Name muss ein Key aus der ' Win.ini unter [Sounds] sein Private Const SND_APPLICATION = &H80 ' der angegebene Name ist ein Ereignissound Private Const SND_ASYNC = &H1 ' stoppt die Wiedergabe aller Sounddateien um diese abzuspielen Private Const SND_FILENAME = &H20000 ' der angegebene Name ist ein Pfad zu einer ' Wave Datei Private Const SND_LOOP = &H8 ' wiederholt unendlich oft die Wiedergabe Private Const SND_MEMORY = &H4 ' der angegebene Name ist ein Byte Array mit den ' Wave-Datei-Daten Private Const SND_NODEFAULT = &H2 ' spielt keinen Standardsound ab, wenn die ' angegebene Datei nicht gefunden wird Private Const SND_NOSTOP = &H10 ' stoppt keine momentan laufenden Sounds Private Const SND_NOWAIT = &H2000 ' wartet nicht auf das Beenden eines Sounds ' um dann den angegebenen Sound abzuspielen Private Const SND_PURGE = &H40 ' stoppt die unendliche Wiedergabe der Sounds, die mit ' SND_LOOP eingeleitet wurde Private Const SND_RESOURCE = &H40004 ' der angegebene Name ist der Name einer ' Ressource, in der sich die Wave-Datei befindet. Für diesen Zweck muss hModule das ' Modul-Handle der Anwendung bekommen, die die Ressource besitzt Private Const SND_SYNC = &H0 ' die Funktion kehrt erst nach Beenden der Wiedergabe ' des Sounds zurück
' Tata direkt aus der Datei abspielen ohne auf Beenden des Sounds warten Private Sub Command1_Click() Dim Retval As Long ' Spielt den Sound ab und bricht den Vorgang ab, wenn diese Funktion erneut ' aufgerufen wird, bevor der Sound komplett abgespielt wurde Retval = PlaySound(ByVal "c:\windows\media\tada.wav", 0&, SND_ASYNC Or _ SND_FILENAME Or SND_NODEFAULT) End Sub
' Tata aus einer Variable abspielen Private Sub Command2_Click() Dim Retval As Long, FFile As Long, MemWav() As Byte ' öffnen der Datei und übertragen in MemWav FFile = FreeFile Open "c:\windows\media\tada.wav" For Binary As FFile ReDim MemWav(LOF(FFile)) Get FFile, , MemWav() Close FFile ' abspielen von Tata aus dem Speicher und auf Beenden des Sounds warten Retval = PlaySound(MemWav(0), 0&, SND_MEMORY Or SND_NODEFAULT) End Sub
' Tata aus der Ressource abspielen (funktioniert nicht in der IDE) Private Sub Command3_Click() Dim Retval As Long, hModule As Long ' Modul-Handle der Anwendung ermitteln hModule = GetModuleHandle(App.EXEName) ' Sound abspielen, aber bei erneutem Aufruf den laufenden Sound _ ' nicht abbrechen Retval = PlaySound(ByVal "Tada", hModule, SND_RESOURCE Or SND_NOSTOP Or _ SND_ASYNC Or SND_NODEFAULT) If Retval = 0 Then MsgBox "Das Programm wird in der IDE ausgeführt oder die Ressource mit _ dem Titel ""Tata"" wurde nicht gefunden.", vbInformation, "Achtung" End If End Sub
' Tata anhand des systemweiten Alias Strings abspielen, falls vorhanden (Tata ist in ' der Regel der Sound, der erklingt wenn Windows Beendet wird.) Private Sub Command4_Click() Dim Retval As Long ' Spielt den Sound ab und bricht den Vorgang ab. wenn diese Funktion erneut ' aufgerufen wird bevor der Sound komplett abgespielt wurde Retval = PlaySound(ByVal "SystemExit", 0&, SND_ASYNC Or SND_APPLICATION Or SND_NODEFAULT) End Sub