函数参考


_WinAPI_LoadLibraryEx

映射指定的可执行模块到调用进程的地址空间

#Include <WinAPI.au3>
_WinAPI_LoadLibraryEx($sFileName [, $iFlags = 0])

参数

$sFileName Win32 可执行模块的名称 (任何 .DLL 或 .EXE 文件).
名称指定的是可执行模块名
$iFlags [可选参数] 指定加载模块时的操作
参数可以是以下值之一:
$DONT_RESOLVE_DLL_REFERENCES - 如果这个值用于可执行模块是一个 DLL,
系统不会为进程和线程的初始化和终止调用 DllMain
此外, 系统不额外加载指定模块中引用的可执行模块
$LOAD_LIBRARY_AS_DATAFILE - 系统映射调用进程地址空间的文件,
就好像它是一个数据文件.
不采取任何操作来执行或准备执行映射文件
$LOAD_WITH_ALTERED_SEARCH_PATH - 如使用此值,
且 $FileName 指定一个路径,
系统使用备用文件搜索策略,
查找并加载指定模块相关联的可执行模块

返回值

成功: 返回可执行模块的句柄
失败: 返回 0

注意/说明

 必须 Constants.au3 预先定义的常量

相关

_WinAPI_LoadLibrary, _WinAPI_FreeLibrary, _WinAPI_LoadString

详情参考

在MSDN中搜索


示例/演示


#include <GuiReBar.au3>
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>

Global $iMemo

_Main()

Func _Main()
    Local $hGUI, $hInput, $btn_get, $hReBar, $hInstance, $sText
    ; 创建 GUI
    $hGUI = GUICreate("WinAPI", 400, 396)

    $hInput = GUICtrlCreateInput("4209", 0, 0, 100, 20)

    ; create the rebar control
    $hReBar = _GUICtrlRebar_Create($hGUI, BitOR($CCS_TOP, $WS_BORDER, $RBS_VARHEIGHT, $RBS_AUTOSIZE, $RBS_BANDBORDERS))

    $iMemo = GUICtrlCreateEdit("", 2, 55, 396, 200, BitOR($WS_VSCROLL, $WS_HSCROLL))
    GUICtrlSetFont($iMemo, 10, 400, 0, "Courier New")


    ;add band containing the  control
    _GUICtrlRebar_AddBand($hReBar, GUICtrlGetHandle($hInput), 120, 200, "String ID:")

    $btn_get = GUICtrlCreateButton("Get String", 0, 0, 90, 20)

    ;add band containing the  control
    _GUICtrlRebar_AddBand($hReBar, GUICtrlGetHandle($btn_get), 120, 200)


    GUISetState()

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
            Case $btn_get
                GUICtrlSetData($iMemo, "")
                $hInstance = _WinAPI_LoadLibraryEx("shell32.dll", $LOAD_LIBRARY_AS_DATAFILE)
                If $hInstance Then
                    $sText = _WinAPI_LoadString($hInstance, GUICtrlRead($hInput))
                    If Not @error Then
                        MemoWrite('Got the String (chars: ' & @extended & '): ' & @CRLF & $sText)
                    Else
                        MemoWrite("Last Error Message: " & @CRLF & _WinAPI_GetLastErrorMessage())
                    EndIf
                    MemoWrite(@CRLF & "Success Freeing? " & _WinAPI_FreeLibrary($hInstance))
                EndIf
        EndSwitch
    WEnd
EndFunc   ;==>_Main

; 写入消息到 memo
Func MemoWrite($sMessage = "")
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite