我需要做的是获得ApplicationData
路径,我在Google中发现有一个名为
HRESULT SHGetFolderPath(
__in HWND hwndOwner,
__in int nFolder,
__in HANDLE hToken,
__in DWORD dwFlags,
__out LPTSTR pszPath
);
但它存在于shell32.dll中 在C#中,我会做类似
的事情[DllImport]
static extern HRESULT SHGetFolderPath() and so on.
在C ++ Console应用程序中我需要做什么才能调用此API?
也许,我可以使用LoadLibrary()
?
但是这样做的正确方法是什么?
我可以以某种方式静态链接此dll作为我的exe的一部分吗? 我正在使用Visual Studio 2010。
答案 0 :(得分:8)
您需要#include shlobj.h并链接到shell32.lib。像这样:
#include "stdafx.h"
#include <windows.h>
#include <shlobj.h>
#include <assert.h>
#pragma comment(lib, "shell32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR path[MAX_PATH];
HRESULT hr = SHGetFolderPath(NULL, CSIDL_APPDATA, NULL, 0, path);
assert(SUCCEEDED(hr));
// etc..
return 0;
}
#pragma注释负责告诉链接器。
答案 1 :(得分:3)
#include <Shlobj.h>
和#pragma comment(lib,"Shell32.lib")
应该有效。