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

解決


まろ  2004-04-20 01:25:22  No: 8431  IP: [192.*.*.*]

ごみ箱のパスは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  IP: [192.*.*.*]

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

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

編集    削除
まろ  2004-04-20 04:00:34  No: 8433  IP: [192.*.*.*]

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

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

編集    削除
にしの  2004-04-20 04:05:26  No: 8434  IP: [192.*.*.*]

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

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

編集    削除
まろ  2004-04-20 19:43:54  No: 8435  IP: [192.*.*.*]

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

編集    削除