2010-10-11 36 views
2

我从注册表读取散发出来类似的条目:如何根据资源标识符加载字符串?

@%SystemRoot%\\System32\\wscsvc.dll,-200

我需要实际加载从文件中的字符串。

我发现an article它描述了如何结束数字行为(负==特定资源ID,积极==文件中的第n个资源),但我很困惑如何加载资源。 ExtractIcon函数似乎做我需要的资源加载,但它返回一个HICON,而不是一个字符串。

如何从文件加载字符串?

回答

4

负载与LoadLibrary的DLL,加载字符串LoadString,然后卸载DLL(假设你没有需要我做什么吧)与FreeLibrary

HMODULE hDll = LoadLibrary("C:\\WINDOWS\\System32\\wscsvc.dll"); 
if(hDll != NULL) 
{ 
    wchar_t *str; 
    if(LoadStringW(hDll, +200, (LPWSTR)&str, 0) > 0) 
     ; // success! str now contains a (read-only) pointer to the desired string 
    else 
     ; // handle error 
    FreeLibrary(hDll); 
} 
else 
    ; // handle error 

注意LoadLibrary(和几乎任何其他函数接受文件名)不理解像%SystemRoot%的环境变量。在传递给LoadLibrary之前,您必须使用诸如ExpandEnvironmentStrings之类的函数来扩展DLL文件名中的环境变量。

+0

哇..我觉得哑巴。谢谢 :) – 2010-10-11 01:52:09