如何枚举RT_VERSION资源语言?

时间:2014-06-06 13:01:04

标签: windows delphi

我目前正在尝试从RT_VERSION资源类型中枚举所有资源语言。 这是我到目前为止没有运气,因为我的回调程序根本没有发射。

function TEnumResLangProc (hModule: HMODULE; lpszType, lpszName : PChar; wIDLanguage : Word; lParam : Longint) : Bool; stdcall;
begin
  MessageBox(0, lpszName, '', 0); // For testing
  MessageBox(0, lpszType, '', 0); // For testing
  result := true;
end;

if not EnumResourceLanguages (HINSTANCE, RT_VERSION, PChar('1'), @TEnumResLangProc, 0)
then RaiseLastOSError;

我总是得到错误代码1813,但我找不到任何关于它的文档。我也不确定"索引"参数PChar('1')我做错了什么以及如何使用所有RT_VERSION种语言?

编辑:

需要值1031

enter image description here

1 个答案:

答案 0 :(得分:3)

此错误代码为ERROR_RESOURCE_TYPE_NOT_FOUND。这意味着指定模块中没有该类型和名称的资源。

  

在图像文件中找不到指定的资源类型。

请注意,错误代码已记录在案:http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381.aspx

这个名字很可能是错的。您的意思是通过MakeIntResource(1)还是'#1'

您的回调函数应设置返回值。编译器会警告你这个错误。你真的应该启用和注意警告。此外,类型声明不是64位兼容,但我怀疑这在这里​​很重要。