vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Windows/System15.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, WinMEViews:  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:

lpModuleNameErwartet 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

 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.