Programming Windows Maniacs - プログラミング ウィンドウズ マニアックス ■ ご利用に際して ■ 更新履歴 ■ お問い合わせ ■ このホームページについて  
ホーム >> シェル >> ゴミ箱にファイルを移動するには

ゴミ箱にファイルを移動するには

  ゴミ箱にファイルを移動するようなシェルの処理は、SHFileOperation () APIにより行うことができます。
  引数として使用される SHFILEOPSTRUCT 構造体の wFunc メンバに FO_DELETE を指定すると、ゴミ箱へ移動する処理になります。
  動作は fFlags メンバでカスタマイズできますので、MSDNを参照してください。

   注意点として、ファイルへのパスを複数指定する際、'\0'で区切る必要があり、終端は、'\0''\0'で終わる必要があります。

  以下は、"C:\a.txt"ファイルと"C:\b.txt"ファイルの2つをゴミ箱へ移動するサンプルです。"C:\a.txt"ファイルと"C:\b.txt"ファイルをあらかじめ作成した上で実行してください。

 

■■■ trash プロジェクト
■ main.cpp

#include <windows.h>
#include <tchar.h>

int WINAPI _tWinMain ( HINSTANCE,
    HINSTANCE,
    _TCHAR *,
    int )
{
// 複数ある場合は、パスを'\0'で区切る。終端は、'\0''\0'である必要がある
    const _TCHAR cszPath[] = _TEXT ( "C:\\a.txt\0C:\\b.txt\0" );

// "c:\\a.txt"と"C:\\b.txt" をゴミ箱へファイルを移動するサンプル (シェルエミュレート)
    SHFILEOPSTRUCT sfs;

    memset ( &sfs, 0, sizeof ( SHFILEOPSTRUCT ) );
    sfs.fFlags = FOF_NOERRORUI | FOF_SIMPLEPROGRESS | FOF_ALLOWUNDO;// ゴミ箱へ移動の確認をする場合     FOF_ALLOWUNDO をつける;
    sfs.wFunc = FO_DELETE;
    sfs.pFrom = cszPath;

    if ( 0 != SHFileOperation ( &sfs ) )
    {
        MessageBox ( NULL,
            _TEXT ( "SHFileOperation 失敗" ),
            _TEXT ( "エラー" ),
            MB_OK | MB_ICONSTOP );

    }

    return 0;
}

  ■ ご利用に際して ■ 更新履歴 ■ お問い合わせ ■ このホームページについて Copyright © 2014 A.Morita