【问题标题】:Read Text file content from External DLL Resource file VB6从外部 DLL 资源文件 VB6 中读取文本文件内容
【发布时间】: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


【解决方案1】:

LoadStringdocumentation 中被描述为旨在加载字符串资源(意思是STRINGTABLE),而不是通用的RC_DATA 或CUSTOM 资源。将您的字符串按应有的方式放入适当的 STRINGTABLE 中,它可以加载字符串,尽管您可能会因为大小而无法存储整个 EULA。

【讨论】:

  • 好的,我现在知道了,但是我如何从我的外部资源文件中读取 RC_DATA 或 CUSTOM 资源?
  • 你必须首先使用 FindResource,然后调用 SizeofResource 来找出有多大,为其分配空间,调用 LockResource,然后 LoadResource 以实际将内容放入您分配的空间,然后 UnlockResource再次释放它。恐怕我不知道如何使用 VB6 来做到这一点;我可以用其他几种语言来做,但不是那种。请参阅docs for LoadResource
  • 是的,我在 C++ 中找到了它,但 VB6 需要它! :(link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 2013-03-21
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
  • 2012-06-05
  • 2016-06-17
相关资源
最近更新 更多