ファイルをごみ箱から元に戻すには?

解決


まろ  2004-04-20 01:25:22  No: 8431

ごみ箱のパスはNTFSの場合C:\Recyclerですよね。
DirectoryExistsで確認して問題ありませんでした。
ごみ箱内のファイル(ここではsample.txt)を元の位置に戻す場合、どうすればいいのでしょう?以下を試したのですがダメで困ってます。
ごみ箱にあるファイルはどこにあるのでしょう?

sFrom := 'C:\Recycler\sample.txt';
sTo := 'C:\';
test(Form1, sFrom, sTo);

procedure test (Handle:HWND; sFrom:string; sTo:string);
var
  fs:SHFILEOPSTRUCT;
begin
  with fs do begin
    Wnd   := Handle;
    pFrom := PChar(sFrom + #0#0);
    pTo   := PChar(sTo + #0#0);
    wFunc := FO_MOVE;
    fFlags:= FOF_ALLOWUNDO;
  end;
  SHFileOperation(fs);
end;


にしの  2004-04-20 01:50:41  No: 8432

C:\Rycyclerというディレクトリはありますが、その中に削除したファイルはありませんよ。
コマンドプロンプトで、
DIR C:\Rycycler /AH
としてみればわかります。

調べてみると、APIではなさそうですね。
IFolderを取得し、IContextMenuを取得し、メニューの「元に戻す」を実行させるか、
IFolderを取得し、IDragTarget, IDropTargetを生成し、ドラッグしたことにさせるしかなさそうです。
かなり不便ですね・・・。ほかに方法があるかもしれません。


まろ  2004-04-20 04:00:34  No: 8433

にしの様。
どうもです。私も私なりに調べて結局見あたらなくて・・・。
「IFolderを取得し、IContextMenuを取得し、メニューの「元に戻す」を実行させる」を試してみます。

それと、ちょっと件名とは別なのですが、
アプリケーションが終了された時、レジストリに文字列を登録したいのですけど、
メッセージで処理しようと思いWM_CLOSEやWM_DESTROY、WM_QUITなどが来たときに
処理するようにしたのですが、タスクマネージャの「プロセス」で終了されるとどれも呼ばれないんです。他のメッセージがあるのでしょうか?
(OnCloseなどでも呼ばれませんでした)


にしの  2004-04-20 04:05:26  No: 8434

別件であれば別の質問にした方がよいですよ。

タスクマネージャでの終了や、シャットダウンなどは、
WM_QUERYENDSESSION
WM_ENDSESSION
の2つでチェックできます。


まろ  2004-04-20 19:43:54  No: 8435

どうもです。
そうですね、もう少し調べてみて解決しなかったら
別に質問します。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加