2010-10-11 64 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