2009-12-16 2 views
7

내가이 절차를 사용 : 휴지통이 꽉 찬 경우휴지통이 찼을 때 ShFileOperation은 무엇을합니까?

function MoveToRecycle(sFileName: widestring): Boolean; 
var 
    fos: TSHFileOpStructW; 
begin 
    FillChar(fos, SizeOf(fos), 0); 
    with fos do 
    begin 
    wnd := 0; 
    wFunc := FO_DELETE; 
    pFrom := PWideChar(sFileName + #0 + #0); 
    pTo := #0 + #0; 
    fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT; 
    end; 
    Result := (ShFileOperationW(fos) = 0); 
end; 

은 무엇 일어날 것, 그것은 false를 반환 또는 영구적으로 파일을 삭제합니까?

어떤 도움

주시면 감사하겠습니다.

+0

올바르게 표시하려면 코드를 4 칸 들여 쓰기하십시오. –

+0

휴지통이 "가득"수 있다는 것을 알지 못했습니다. 어떻게 작동합니까? –

+0

그건 그렇고 - 좋은 기능. 실제로 휴지통으로 이동하는 방법을 알고있는 것이 좋습니다. 나는 항상 "deletefile"함수를 사용했다. –

답변

3

알아내는 가장 좋은 방법은 실제로 수행하는 것입니다. 내 휴지통을 드라이브의 최소 1 %로 만들었습니다. 대용량 파일을 만들어 그 기능을 사용하여 휴지통으로 옮깁니다.

필자가 (어쨌든 XP에서) 알아 낸 것은 함수가 항상 휴지통으로 이동한다는 것입니다. 삭제 된 파일 중 가장 오래된 파일을 영구적으로 삭제합니다. 따라서 휴지통이 가득 차면 "처음 선입 선출"방식을 사용하여 어떤 파일을 부팅할지 결정합니다.

false를 반환하는 함수를 가져올 수 없습니다. 아마도 할당 된 휴지통에 비해 너무 큰 파일을 생성하면됩니다.

+0

사용해 주셔서 감사합니다! 이것은 내 고객에게 매우 나쁜 나쁜 소식이 될 것입니다. – Irwan

+0

고객이 파일을 휴지통에 보관하는 것이 중요한 경우 왜 휴지통 한도를 제거하지 않습니까? – jpfollenius

+0

그는 일반 사용자이기 때문에 그 사람은 그 사람을 모른다는 것 같아요 – Irwan