特殊フォルダーのパスを求める

Windwos System で使われる特殊フォルダーのパスを求めます。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. 新規プロジェクトで[空のプロジェクト](Path) を作成します。
  2. Path.cpp のソースコードです。
    shlobj.h をインクルードして下さい。
    /*****************************************/
    /*★ システムのパスを求める    前田 稔 ★*/
    /*****************************************/
    #include    <windows.h>
    #include    <shlobj.h>
    
    char    path[MAX_PATH];
    
    //★ Windows Main 関数
    int PASCAL  WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int nCmdShow)
    { 
        SHGetSpecialFolderPath(NULL,path,CSIDL_STARTUP,0);
        //SHGetSpecialFolderPath(NULL,path,CSIDL_PROGRAMS,0);
        //SHGetSpecialFolderPath(NULL,path,CSIDL_DESKTOP,0);
        MessageBox(NULL,path,"Windows System Path",MB_OK);
        return 0;
    }
    
  3. プログラムを実行するとスタートアップ・フォルダー(CSIDL_STARTUP)のパスが表示されます。
  4. CSIDL_PROGRAMS にするとスタートメニュープログラムのパスが、CSIDL_DESKTOP にすると デスクトップのパスが表示されます。

【説明】

  1. 以下の特殊フォルダーのパスは、次の関数で取得できます。
  2. 上記以外のパスは SHGetSpecialFolderPath() で取得します。
    第4引数に真の値を指定すると、フォルダーがないとき作成されます。
    第3引数パス
    CSIDL_DESKTOPC:\WINDOWS\デスクトップ
    CSIDL_DESKTOPDIRECTORYC:\WINDOWS\デスクトップ
    CSIDL_STARTMENUC:\WINDOWS\スタート メニュー
    CSIDL_PROGRAMSC:\WINDOWS\スタート メニュー\プログラム
    CSIDL_STARTUPC:\WINDOWS\スタート メニュー\プログラム\スタートアップ
    CSIDL_ALTSTARTUPC:\WINDOWS\スタート メニュー\プログラム\スタートアップ
    CSIDL_PERSONALC:\My Documents
    CSIDL_FAVORITESC:\WINDOWS\Favorites
    CSIDL_RECENTC:\WINDOWS\Recent
    CSIDL_SENDTOC:\WINDOWS\SendTo
    CSIDL_NETHOODC:\WINDOWS\NetHood
    CSIDL_FONTSC:\WINDOWS\FONTS
    CSIDL_TEMPLATESC:\WINDOWS\ShellNew
    CSIDL_APPDATAC:\WINDOWS\Application Data
    CSIDL_PRINTHOODC:\WINDOWS\PrintHood
    CSIDL_INTERNET_CACHEC:\WINDOWS\Temporary Internet Files
    CSIDL_COOKIESC:\WINDOWS\Cookies
    CSIDL_HISTORYC:\WINDOWS\History
    CSIDL_COMMON_DESKTOPDIRECTORYC:\WINDOWS\All Users\デスクトップ
    CSIDL_COMMON_STARTMENUC:\WINDOWS\All Users\スタート メニュー
    CSIDL_COMMON_PROGRAMSC:\WINDOWS\All Users\スタート メニュー\プログラム
    CSIDL_COMMON_STARTUPC:\WINDOWS\All Users\スタート メニュー\プログラム\スタートアップ
    CSIDL_COMMON_ALTSTARTUPC:\WINDOWS\スタート メニュー\プログラム\スタートアップ
    CSIDL_COMMON_FAVORITESC:\WINDOWS\All Users\Favorites
  3. C# でも同様のプログラムを作成しています。
    超初心者のプログラム入門(C#)から Special Folder を参照して下さい。
    リンクがエラーになるときは「前田稔の超初心者のプログラム入門」から辿って下さい。

【演習】

  1. サンプルプログラムで記述した以外のパスを取得して表示して下さい。
  2. 取得したパスをエクスプローラで表示して確認して下さい。
  3. カレントディレクトリを取得して下さい。
  4. 起動したモジュールのパスを取得して下さい。

超初心者のプログラム入門(Win32API C++)