SHFileOperation 確認メッセージが表示されない

解決


toshimitsu  2016-02-05 03:58:52  No: 47947

はじめまして。
現在、SHFileOperationを使用してファイルの削除処理を行っています。

ある特定の端末のみ削除確認メッセージが表示されず
即削除されてしまう現象が発生しています。

該当端末 Windows8.1 (※8.1updateかどうかは不明)
開発環境 Delphi2007

ソースは次の通りです。

function AllowUndo(AHandle: Thandle; ATarget: string): Boolean;
var
  foStruct: TSHFileOpStruct;
begin
  with foStruct do
    begin
      wnd    := AHandle;
      wFunc  := FO_DELETE;
      pFrom  := PChar(ATarget+#0);
      pTo    := PChar(#0);
      fFlags := FOF_ALLOWUNDO;
      fAnyOperationsAborted := False;
      hNameMappings := nil;
      lpszProgressTitle := nil;
    end;
  Result := (SHFileOperation(foStruct) = 0);
end;

通常は次のようなメッセージが表示されると思っているのですが
ソースを含め何か勘違いをしているのでしょうか。

■ローカルドライブのデータが対象の場合
「ごみ箱に移動しますか?」

■ネットワークドライブ等が対象の場合
「完全に削除しますか?」

他の端末ではWindowsXP〜Windows10まで問題なく動作しているため
現象も再現できず何かヒントはないかと質問させていただきました。

よろしくお願い致します。


igy  2016-02-05 04:04:17  No: 47948

ちなみに、その"特定の端末"の「ごみ箱」のプロパティで、
「削除の確認メッセージを表示する」には、チェックが付いていますか?


toshimitsu  2016-02-05 23:39:35  No: 47949

igy さん

まさにご指摘の通りでした。
このような設定があったとは知らずお恥ずかしい限りです。

"ごみ箱に入れずに削除する"という設定もあるようですし
自前でメッセージの処理を行ったほうが確実かもしれませんね。

ありがとうございました。


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

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






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