辣椒龙 发表于 2010-8-20 15:55:50

如何返回某DLL中的字符串资源[已解决]

本帖最后由 辣椒龙 于 2010-8-20 19:50 编辑

用ResHacker可以看到这些资源,以字符串形式保存于DLL之中,我知道它们的索引号。
有没有方法能像GUICtrlSetImage那样提供个DLL文件路径,索引号,就能读到这些字符串资源呢?

辣椒龙 发表于 2010-8-20 15:57:15

不是很喜欢用 Extras\OtherEXE 目录下的 ResHacker.exe 觉得它体积太大了……

Ziya 发表于 2010-8-20 15:59:44

DLLCall试过么?
http://www.autoitx.com/Doc/html/functions/dllcall.htm

辣椒龙 发表于 2010-8-20 16:08:00

看到过:$LoadBitmap = DllCall("User32.dll", "hwnd", "LoadBitmap", "hwnd", $LoadLibraryA, "str", $sBitmap)
但是不知道我要用什么入口函数名……
还望楼上同学指点一二!

thesnow 发表于 2010-8-20 17:26:45

LoadString

辣椒龙 发表于 2010-8-20 19:49:06

多谢楼上,选来选去,还是选了 WinAPI.au3 中的 _WinAPI_LoadString
摘录一个简单的例子:                $hInstance = _WinAPI_LoadLibraryEx("shell32.dll", $LOAD_LIBRARY_AS_DATAFILE)
                If $hInstance Then
                  $sText = _WinAPI_LoadString($hInstance, GUICtrlRead($hInput));GUICtrlRead($hInput)是资源序号
                  If Not @error Then
                        MemoWrite('获取的字符串(字符 : ' & @extended & '): ' & @CRLF & $sText)
                  Else
                        MemoWrite("最后一个错误信息 : " & @CRLF & _WinAPI_GetLastErrorMessage())
                  EndIf
                  MemoWrite(@CRLF & "成功释放了吗? " & _WinAPI_FreeLibrary($hInstance))
                EndIf
页: [1]
查看完整版本: 如何返回某DLL中的字符串资源[已解决]