www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - sending a file to the Recycle Bin or Trashcan

reply jicman <cabrera_ _wrc.xerox.com> writes:
Greetings!

Is there a way to send a file to the recycle bin or trashcan in Windows?  I
know I can delete it using std.file, but how can I send it to the recycle bin?

thanks,

josé
Jan 30 2008
parent reply Regan Heath <regan netmail.co.nz> writes:
jicman wrote:
 Greetings!
 
 Is there a way to send a file to the recycle bin or trashcan in
 Windows?  I know I can delete it using std.file, but how can I send
 it to the recycle bin?
I googled this VB example, you can usually convert VB to C/C++ fairly easily: http://www.cpearson.com/excel/recycle.aspx Search MSDN for SHFileOperation. It's declared in shellapi.h and you'll need to link your D code with shell32.lib or shell32.dll. eg --[recycle.d]-- import std.c.windows.windows; extern(Windows) { alias WORD FILEOP_FLAGS; struct SHFILEOPSTRUCTA { HWND hwnd; UINT wFunc; LPCSTR pFrom; LPCSTR pTo; FILEOP_FLAGS fFlags; BOOL fAnyOperationsAborted; LPVOID hNameMappings; LPCSTR lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS } alias SHFILEOPSTRUCTA* LPSHFILEOPSTRUCTA; struct SHFILEOPSTRUCTW { HWND hwnd; UINT wFunc; LPCWSTR pFrom; LPCWSTR pTo; FILEOP_FLAGS fFlags; BOOL fAnyOperationsAborted; LPVOID hNameMappings; LPCWSTR lpszProgressTitle; // only used if FOF_SIMPLEPROGRESS } alias SHFILEOPSTRUCTW* LPSHFILEOPSTRUCTW; int SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp); int SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp); } void main() { SHFILEOPSTRUCTA op; // set op members SHFileOperationA(&op); } To compile: dmd recycle.d shell32.lib Regan
Jan 30 2008
parent reply Regan Heath <regan netmail.co.nz> writes:
Add these to my last post:

UINT	FO_DELETE         		= 0x0003;
UINT	FOF_ALLOWUNDO     		= 0x0040;
UINT	FOF_NOCONFIRMATION		= 0x0010;

and use this main:

void main()
{
	SHFILEOPSTRUCTA op;
	
     op.wFunc = FO_DELETE;
     op.pFrom = toStringz("C:\\test.txt");
     op.fFlags = FOF_ALLOWUNDO;
     op.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION;

	writefln(SHFileOperationA(&op));
}

and it puts "C:\\test.txt" in my receycle bin :)

R
Jan 30 2008
parent jicman <cabrera_ _wrc.xerox.com> writes:
Regan Heath Wrote:

 Add these to my last post:
 
 UINT	FO_DELETE         		= 0x0003;
 UINT	FOF_ALLOWUNDO     		= 0x0040;
 UINT	FOF_NOCONFIRMATION		= 0x0010;
 
 and use this main:
 
 void main()
 {
 	SHFILEOPSTRUCTA op;
 	
      op.wFunc = FO_DELETE;
      op.pFrom = toStringz("C:\\test.txt");
      op.fFlags = FOF_ALLOWUNDO;
      op.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION;
 
 	writefln(SHFileOperationA(&op));
 }
 
 and it puts "C:\\test.txt" in my receycle bin :)
 
 R
Thanks Regan. josé
Jan 30 2008