小编Kir*_*ill的帖子

Windows HOME - SHGet(已知)FolderPath

我正在尝试编写一个函数来获得与Windows相当的HOME.我的C技能很生疏,所以不要介意我的示例代码不能编译.我正在尝试在Windows Vista及更高版本上使用SHGetKnownFolderPath,在Server 2003及更早版本上使用SHGetFolderPath.由于我希望遇到运行Windows XP的用户(因为它仍然是Windows的第一个部署版本),我将避免在符号表中引用SHGetKnownFolderPath(因为这将导致二进制文件甚至不会在XP上加载).我知道LoadLibrary()shell32和GetProcAddress()从那里开始,但我做函数指针的技巧至少可以说是垃圾.

当我编写功能并且难以处理时,我将它们隔离到一个单独的示例文件中.到目前为止,破碎的例子是:

#include <windows.h>
#include <stdio.h>

// Pointerizing this Vista-and-later call for XP/2000 compat, etc.
typedef HRESULT (WINAPI* lpSHGetKnownFolderPath)(
    REFKNOWNFOLDERID rfid,
    DWORD dwFlags,
    HANDLE hToken,
    PWSTR *ppszPath
) lpSHGetKnownFolderPath;

int main(int argc, char *argv[])
{
    // SHGet(Known)FolderPath() method.
    HMODULE hndl_shell32;
    lpSHGetKnownFolderPath pSHGetKnownFolderPath;
    hndl_shell32 = LoadLibrary("shell32");
    pSHGetKnownFolderPath = GetProcAddress(hndl_shell32, "SHGetKnownFolderPathW");
    if(pSHGetKnownFolderPath != NULL) {

    } else {

    }

}
Run Code Online (Sandbox Code Playgroud)

我的问题是:知道我做错了,我该如何做到这一点?关于如何在未来正确行事的解释将不胜感激.谢谢.

c++ windows winapi

1
推荐指数
1
解决办法
2948
查看次数

标签 统计

c++ ×1

winapi ×1

windows ×1