Code archives/File Utilities/Delete files to Recycle Bin

This code has been declared by its author to be Public Domain code.

Download source code

Delete files to Recycle Bin by Kev2008
When we delete files in blitz3d these are gone for good, use the code below to move them to the recycle bin in case you want a user to recover them later
decls needs to be added to userlibs.

.lib "shell32.dll"
shell32_SHFileOperation%(lpFileOp*):"SHFileOperationA" 

.lib "user32.dll"
user32_CallWindowProc%(lpPrevWndFunc*,hwnd%,msg%,wParam%,lParam$):"CallWindowProcA"

;----------------------------------------------------------------------------------------

; and a simple example

Const FO_DELETE = $3
Const FOF_ALLOWUNDO = $40
Const FOF_NOCONFIRMATION = $10
Const FOF_SILENT = $4

; send example file to bin
If send_to_bin("e:\tmp.txt") = 0 Then
	Print "sent to bin"
Else
	Print "problem sending file to bin"
EndIf

MouseWait
End

Function send_to_bin(filename$)

	; build quick asm call to obtain string address
	asm = CreateBank(5)
	Restore asm_data
	For add_byte = 0 To 4
		Read byte
		PokeByte asm,add_byte,byte
	Next
	str_addr = user32_CallWindowProc(asm,0,0,0,filename$)

	; build struct
	bank = CreateBank(24)
	PokeInt bank,4,FO_DELETE 
	PokeInt bank,8,str_addr
	PokeInt bank,16,FOF_ALLOWUNDO Or FOF_NOCONFIRMATION Or FOF_SILENT

	; delete file to bin
	value =  shell32_SHFileOperation(bank)
	
	FreeBank bank
	FreeBank asm
	
	Return value

End Function

.asm_data
Data $8b,$44,$24,$10,$c3

Comments

markcw2008
Cool, I didn't know you could do that. Nice one Kev.


Code Archives Forum