经常操作的注册表的人都知道注册表有一大堆这样的字符串,比喻@%SystemRoot%\\system32\\notepad.exe,-469,它的内容是"文本文档"
但是我们要自己编程获取这样的字符串呢
我们可以使用SHLoadIndirectString函数,该函数用来从指定资源提取指定文本资源
它的原型是
HRESULT SHLoadIndirectString(
_In_ PCWSTR pszSource,
_Out_ PWSTR pszOutBuf,
_In_ UINT cchOutBuf,
_Reserved_ void **ppvReserved
);
pszSource
以@符号开头的间接字符串
pszOutBuf
指向一个缓冲区,当该函数返回时,接收文本资源
cchOutBuf
由pszOutBuf所指向的缓冲区大小
ppvReserved
没有用,设置为NULL
返回值
如果函数成功,则返回值为S_OK。否则它将返回HRESULT错误码
我们可以这样写
TCHAR szOut[1024];
SHLoadIndirectString(_T("@%SystemRoot%\\system32\\notepad.exe,-469"), szOut, 1024, NULL);
这样就获取到了"文本文档"的字符串