Drag file from device and copy to local hard disk drive using .NET -
i'm using code capture dragged files form , copy them specific folder (i have left copy process out, i'm using - filesystem.copydirectory(copyfiledetails.dir.fullname, copyfiledetails.target, uioption.alldialogs); , filesystem.copyfile(file, newfilename, uioption.alldialogs);
this.dragenter += new drageventhandler(form1_dragenter); this.dragdrop += new drageventhandler(form1_dragdrop); private void form1_dragenter(object sender, drageventargs e) { //string action = e.data.tostring(); if (e.data.getdatapresent(dataformats.filedrop)) e.effect = dragdropeffects.copy; else if (e.data.getdatapresent("filegroupdescriptorw")) { system.io.memorystream info = e.data.getdata("filegroupdescriptor") system.io.memorystream; system.io.memorystream content = e.data.getdata("filegroupdescriptorw") system.io.memorystream; e.effect = dragdropeffects.copy; } } private void form1_dragdrop(object sender, drageventargs e) { if (e.data.getdatapresent(dataformats.filedrop)) { string[] files = (string[])e.data.getdata(dataformats.filedrop); } else if (e.data.getdatapresent("filegroupdescriptorw")) { system.io.memorystream info = e.data.getdata("filegroupdescriptor") system.io.memorystream; system.io.memorystream content = e.data.getdata("filegroupdescriptorw") system.io.memorystream; clipboardmemorystream = (memorystream)e.data.getdata("filegroupdescriptorw", true); bytearray = clipboardmemorystream.toarray(); // todo: read data stream } }
now when drag file form i'm getting file names (string[] files) , have no problem copy hard disk drive.
but when dragging file device (say camera) i'm getting filestream don't know how can turn file same name original one. , need support large files , folders.
how implement this?
try following code read filename filegroupdescriptor:
dim iostream system.io.stream = directcast(e.data.getdata("filegroupdescriptor"), system.io.stream) dim contents byte() = new [byte](511) {} iostream.read(contents, 0, 512) iostream.close() dim sb new system.text.stringbuilder() dim integer = 76 while contents(i) <> 0 sb.append(cchar(chrw(contents(i)))) += 1 end while filename = sb.tostring()
Comments
Post a Comment