【发布时间】:2014-07-17 12:46:40
【问题描述】:
我正在尝试从我的自定义 DLL 资源文件中加载外部文本,但它不起作用。
资源文件内容(Test.dll、Test.rc和Test.res包含Eula.txt),Eula.txt文件大约6Kb:
900 CUSTOM "Eula.txt"
我正在使用这样的代码:
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function LoadString Lib "user32" Alias "LoadStringA" (ByVal hInstance As Long, ByVal wID As Long, ByVal lpBuffer As String, ByVal nBufferMax As Long) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Public Function LoadStrRes(lgResID As Long) As String
On Error Resume Next
Dim lgRet As Long
Dim stBuff As String * 32768
Dim lgBuffPos As Long
Dim stFile As String
stFile = App.Path & "\Test.dll"
lgRet = LoadLibrary(stFile)
Call LoadString(lgRet, lgResID, stBuff, Len(stBuff))
lgBuffPos = InStr(1, stBuff, Chr$(0))
LoadStrRes = Left$(stBuff, lgBuffPos - 1)
Call FreeLibrary(lgRet)
Exit Function
End Function
这样调用函数:
Dim stTxtData As String
stTxtData = LoadStrRes(900)
txtEula.Text = stTxtData
有人能告诉我为什么它不适合我吗?
问候
【问题讨论】:
-
虽然你已经写了两遍了,但是你还没有解释“不工作”是什么意思。如果您不能清楚地描述您遇到的问题,则很难为您提供帮助,因为我们无法看到您的屏幕或从我们坐的地方读懂您的想法。如果您需要帮助,您需要edit您的问题并清楚地解释问题,然后您可以提出比“为什么它不适合我?”更具体的问题。
-
什么写了两次?!?该函数返回空字符串,但如果我读取 STRINGTABLE 则它工作正常,那么,为什么我不能使用此函数从外部资源文件中读取 CUSTOM 数据?
标签: dll resources external loadlibrary