Shell Object でファイルをコピーする

Shell Object はファイル操作に欠くことのできない専用の Object Module です。
所が Windows System の重要な所は原則非公開で、Shell Object に付いても解からないことがいっぱいです。
それでもゴミ箱やデスクトップフォルダーなど必要最小限のことは使えるようになりました。
ここでは Shell Object を使ってファイルをコピーしてみます。

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

プロジェクトの設定

  1. 新規プロジェクトで[空のプロジェクト](ShObj) を作成します。
  2. ShObj.cpp のソースコードです。
    shlobj.h をインクルードして下さい。
    /***************************************/
    /*★ ファイルをコピーする    前田 稔 ★*/
    /***************************************/
    #include    <windows.h>
    #include    <shlobj.h>
    
    char    sfile[24]= {  "C:\\TMP\\B.TXT"  };
    char    dfile[24]= {  "C:\\TMP\\W.TXT"  };
    
    //★ ファイルをコピーする
    int CopyFile(char *s_file, char *d_file)
    {   SHFILEOPSTRUCT  fop;
    
        ZeroMemory(&fop,sizeof(SHFILEOPSTRUCT));
        fop.wFunc = FO_COPY;
        fop.pFrom = s_file;
        fop.pTo   = d_file;
        return SHFileOperation(&fop);
    }
    
    //★ Windows Main 関数
    int PASCAL  WinMain(HINSTANCE hInst, HINSTANCE, LPSTR, int nCmdShow)
    {
        if (CopyFile(sfile,dfile)==S_OK)
            MessageBox(NULL,sfile,"Shell でファイルをコピーしました",MB_OK);
        else
            MessageBox(NULL,sfile,"Shell でファイルコピーに失敗しました",MB_OK);
        return 0;
    }
        
  3. wFunc で実行したい機能を指定します。
    wFunc 説明
    FO_COPY コピー
    FO_DELETE 削除
    FO_MOVE 移動
    FO_RENAME 名前の変更

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