ごみ箱のパスは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;
C:\Rycyclerというディレクトリはありますが、その中に削除したファイルはありませんよ。
コマンドプロンプトで、
DIR C:\Rycycler /AH
としてみればわかります。
調べてみると、APIではなさそうですね。
IFolderを取得し、IContextMenuを取得し、メニューの「元に戻す」を実行させるか、
IFolderを取得し、IDragTarget, IDropTargetを生成し、ドラッグしたことにさせるしかなさそうです。
かなり不便ですね・・・。ほかに方法があるかもしれません。
にしの様。
どうもです。私も私なりに調べて結局見あたらなくて・・・。
「IFolderを取得し、IContextMenuを取得し、メニューの「元に戻す」を実行させる」を試してみます。
それと、ちょっと件名とは別なのですが、
アプリケーションが終了された時、レジストリに文字列を登録したいのですけど、
メッセージで処理しようと思いWM_CLOSEやWM_DESTROY、WM_QUITなどが来たときに
処理するようにしたのですが、タスクマネージャの「プロセス」で終了されるとどれも呼ばれないんです。他のメッセージがあるのでしょうか?
(OnCloseなどでも呼ばれませんでした)
別件であれば別の質問にした方がよいですよ。
タスクマネージャでの終了や、シャットダウンなどは、
WM_QUERYENDSESSION
WM_ENDSESSION
の2つでチェックできます。
どうもです。
そうですね、もう少し調べてみて解決しなかったら
別に質問します。
ありがとうございました。
ツイート | ![]() |