C++windowsデスクトップのパスを取得
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation (HWND hwndOwner, int nFolder,LPITEMIDLIST * ppidl);//関数はhwndOwner:「所有者ウィンドウ」を指定し、この関数を呼び出すダイアログボックスまたは情報ボックスに表示されます.nFolder:整数idで、どのディレクトリが検索対象ディレクトリであるかを決定し、その値はCSIDL_である可能性があります.BITUCKET回収局CSIDL_CONTROLSコントロールパネルCSIDL_DESKTOP Windowsデスクトップdesktop;CSIDL_DESKTOPSDIRECTORY desktopのディレクトリ;CSIDL_DRIVESマイコンCSIDL_FONTSフォントディレクトリCSIDL_NETHOODネット上の隣人CSIDL_NETWORKネット上の隣人virtual folder CSIDL_PERSONALマイドキュメントCSIDL_PRINTERSプリンタCSIDL_PROGRAMSプログラムグループCSIDL_RECENT最近開いたドキュメントCSIDL_SENDTOがメニュー項目CSIDLに送信STARTMENUクイックスタートメニューCSIDL_STARTUP起動ディレクトリCSIDL_TEMPLATES仮文書ppidl:pidlアドレス.SHGetSpecialFolderLocationは住所をpidlに書いた.
#include "windows.h"
#include "shlobj.h"
string getDesktopPath()
{
LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;
char szDir[200];
if (SUCCEEDED(SHGetMalloc(&pShellMalloc)))
{
if (SUCCEEDED(SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl))) {
// true
SHGetPathFromIDListA(pidl, szDir);
pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}
return string(szDir);
}
int main()
{
string path = getDesktopPath();
cout << path << endl;
system("pause");
return 0;
}