Dekrementiert den Referenzzähler der geladenen, dynamischen Bibliothek (DLL)
#include <WinAPIRes.au3>
_WinAPI_FreeLibrary ( $hModule )
$hModule | Handle, welches das Modul identifiziert |
Erfolg: | True |
Fehler: | False. Es ist _WinAPI_GetLastError() aufzurufen um erweiterte Fehlerinformationen zu erhalten. |
Für jede dynamische Bibliothek unterhält Windows einen Referenzzähler. Der Wert des Zählers enthält
die Anzahl der Prozesse, die gerade Gebrauch von dieser Bibliothek machen. Wird eine dynamische Bibliothek
in einem Prozess geladen, wird der Referenzzähler inkrementiert (um Eins erhöht) und bei der Freigabe der
Bibliothek dekrementiert (um Eins erniedrigt). Ist der Wert des Referenzzählers Null, wird die Bibliothek
augenblicklich von keinem Prozess genutzt.
_WinAPI_LoadLibrary, _WinAPI_LoadLibraryEx, _WinAPI_LoadString
Suche nach FreeLibrary in der MSDN Bibliothek.
#include <GUIConstantsEx.au3>
#include <GuiReBar.au3>
#include <WinAPIError.au3>
#include <WinAPIRes.au3>
#include <WindowsConstants.au3>
Global $g_idMemo
Example()
Func Example()
Local $hGui, $idInput, $id_Get, $hReBar, $hInstance, $sText
; Erstellt eine GUI
$hGui = GUICreate("WinAPI", 500, 300)
$idInput = GUICtrlCreateInput("4209", 0, 0, 100, 20)
; Erstellt ein Rebar-Control
$hReBar = _GUICtrlRebar_Create($hGui, BitOR($CCS_TOP, $WS_BORDER, $RBS_VARHEIGHT, $RBS_AUTOSIZE, $RBS_BANDBORDERS))
; Erstellt ein mehrzeiliges Input-Control (Memo)
$g_idMemo = GUICtrlCreateEdit("", 2, 55, 496, 200, BitOR($WS_VSCROLL, $WS_HSCROLL))
GUICtrlSetFont($g_idMemo, 10, 400, 0, "Courier New")
; Fügt eine neue Gruppe in das Rebar-Control ein, die das Input-Control enthält
_GUICtrlRebar_AddBand($hReBar, GUICtrlGetHandle($idInput), 120, 200, "String-ID:")
$id_Get = GUICtrlCreateButton("String einlesen", 0, 0, 70, 25)
; Fügt eine neue Gruppe in das Rebar-Control ein, die den "String einlesen"-Button enthält
_GUICtrlRebar_AddBand($hReBar, GUICtrlGetHandle($id_Get), 120, 200)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $id_Get
GUICtrlSetData($g_idMemo, "")
; Bindet eine ausführbare Datei als Modul in den Adressraum des Skriptprozesses ein
$hInstance = _WinAPI_LoadLibraryEx("shell32.dll", $LOAD_LIBRARY_AS_DATAFILE)
If $hInstance Then
; Lädt eine Stringressource aus einem eingebundenen Modul
$sText = _WinAPI_LoadString($hInstance, GUICtrlRead($idInput))
If Not @error Then
MemoWrite('Folgender String wurde eingelesen (' & @extended & ' Zeichen): ' & @CRLF & @CRLF & $sText)
Else
MemoWrite("Letzte Fehlermeldung: " & @CRLF & @CRLF & _WinAPI_GetLastErrorMessage())
EndIf
; Gibt das eingebundene Modul wieder frei
MemoWrite(@CRLF & @CRLF & @CRLF & @CRLF & "Freigabe der Bibliothek erfolgreich? " & _WinAPI_FreeLibrary($hInstance))
EndIf
EndSwitch
WEnd
EndFunc ;==>Example
; Schreibt eine Nachricht in das Memo
Func MemoWrite($sMessage = "")
GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite