ごみ箱へGO!

ファイルをごみ箱に送るコードを書いた。

#include <windows.h>
#include <shlwapi.h>  // shlwapi.lib のリンクが必要
#include <string.h>

int main(int argc, char **argv) {
    int i;
    char from[MAX_PATH + 1];
    SHFILEOPSTRUCT op = {
        NULL, FO_DELETE, from, NULL, FOF_SILENT | FOF_ALLOWUNDO};

    for (i = 1; i < argc; i++) {
        if (PathIsRelative(argv[i])) {
            PathSearchAndQualify(argv[i], from, MAX_PATH);
        } else {
            strcpy(from, argv[i]);
        }
        from[strlen(from) + 1] = '\0';  // double null terminate
        SHFileOperation(&op);
    }
    return 0;
}

パスを一発で補完できる shlwapi が便利すぎる。

SHFileOperation() は一度に複数のファイルを処理できるのだが、自分のことなので \0 の処理を間違えてメモリを破壊しそうだ。

今の所、UNCにもワイルドカードにも対応してない荒削りだが、徐々に改善していけたらいいなあ。