工作需要,模拟windows文件操作,要对剪贴板数据操作,在exe中模拟右键的文件复制,剪切,粘贴。网上完全没有找到类似的东西得到zswang的帮助,完成这个功能。
模拟文件剪切:
DataObject cDataObject
=
new
DataObject();
cDataObject.SetData(DataFormats.FileDrop, strFiles); // strFiles
为文件路径的string[]
MemoryStream cMemoryStream = new MemoryStream();
cMemoryStream.WriteByte(( byte )DragDropEffects.Move);
cMemoryStream.WriteByte( 0 );
cMemoryStream.WriteByte( 0 );
cMemoryStream.WriteByte( 0 );
cMemoryStream.Position = 0 ;
cDataObject.SetData( " Preferred DropEffect " , cMemoryStream);
Clipboard.SetDataObject(cDataObject);
cDataObject.SetData(DataFormats.FileDrop, strFiles); // strFiles
为文件路径的string[]
MemoryStream cMemoryStream = new MemoryStream();
cMemoryStream.WriteByte(( byte )DragDropEffects.Move);
cMemoryStream.WriteByte( 0 );
cMemoryStream.WriteByte( 0 );
cMemoryStream.WriteByte( 0 );
cMemoryStream.Position = 0 ;
cDataObject.SetData( " Preferred DropEffect " , cMemoryStream);
Clipboard.SetDataObject(cDataObject);
判断用户在文件夹中是复制还是剪切
IDataObject vDataObject
=
Clipboard.GetDataObject();
if ( ! vDataObject.GetDataPresent(DataFormats.FileDrop)) return ;
MemoryStream vMemoryStream = (MemoryStream)vDataObject.GetData(
" Preferred DropEffect " , true );
DragDropEffects vDragDropEffects = (DragDropEffects)vMemoryStream.ReadByte();
if ((vDragDropEffects & DragDropEffects.Move) == DragDropEffects.Move)
Text = " 剪切 " ;
else if ((vDragDropEffects & DragDropEffects.Copy) == DragDropEffects.Copy)
Text = " 复制 " ;
if ( ! vDataObject.GetDataPresent(DataFormats.FileDrop)) return ;
MemoryStream vMemoryStream = (MemoryStream)vDataObject.GetData(
" Preferred DropEffect " , true );
DragDropEffects vDragDropEffects = (DragDropEffects)vMemoryStream.ReadByte();
if ((vDragDropEffects & DragDropEffects.Move) == DragDropEffects.Move)
Text = " 剪切 " ;
else if ((vDragDropEffects & DragDropEffects.Copy) == DragDropEffects.Copy)
Text = " 复制 " ;