如何屏蔽SHFileOperation()删除目录时的提示(100分)

  • 主题发起人 主题发起人 jonyhuang
  • 开始时间 开始时间
J

jonyhuang

Unregistered / Unconfirmed
GUEST, unregistred user!
删除目录:<br>procedure TftpForm.Button1Click(Sender: TObject);<br>var<br>&nbsp; T:TSHfileOpStruct;//要引用ShellApI<br><br>&nbsp; P:String;<br>begin<br>&nbsp; P:='d:/newespk/abc';//要写完整路径。<br>&nbsp; with T do<br>&nbsp; begin<br>&nbsp; &nbsp; &nbsp;Wnd := 0;<br>&nbsp; &nbsp; &nbsp;wFunc := FO_DELETE;<br>&nbsp; &nbsp; &nbsp;pFrom := pchar(p);<br>&nbsp; &nbsp; &nbsp;pTo := nil;<br>&nbsp; &nbsp; &nbsp;//fFlags := FOF_ALLOWUNDO; &nbsp;//显示删除进度条<br>&nbsp; end;<br>&nbsp; SHFileOperation(T);<br>end;<br>如何使他直接删除而不出现提示呢.谢谢
 
procedure TNetFile.DelFilesToRecycleBin(DialogBoxHandle: HWND;const FileName: String);<br>Var<br>&nbsp; T:TSHFileOpStruct;<br>&nbsp; P:String;<br>begin<br>&nbsp; P:=FileName;<br>&nbsp; FillChar(T, SizeOf(TSHFileOpStruct), 0);<br>&nbsp; With T do<br>&nbsp; Begin<br>&nbsp; &nbsp; Wnd:=DialogBoxHandle;<br>&nbsp; &nbsp; wFunc:=FO_DELETE;<br>&nbsp; &nbsp; pFrom:=Pchar(P);<br>&nbsp; &nbsp; fFlags:=FOF_ALLOWUNDO Or FOF_NOCONFIRMATION Or FOF_NOERRORUI &nbsp;;//关键在这里<br>&nbsp; &nbsp; fAnyOperationsAborted &nbsp;:=false;<br>&nbsp; End;<br>&nbsp; SHFileOperation(T);<br>End;<br>可以参考MSDN
 
这里有一些参数,你试一下看??<br>ShFileOperation只有一个参数是LPSHFILEOPSTRUCT型的相当于delphi中的TSHFileOpStruct;<br>c语言定义为:<br>typedef struct _SHFILEOPSTRUCT{ <br>&nbsp; &nbsp; HWND &nbsp; &nbsp; &nbsp; &nbsp; hwnd; <br>&nbsp; &nbsp; UINT &nbsp; &nbsp; &nbsp; &nbsp; wFunc; <br>&nbsp; &nbsp; LPCSTR &nbsp; &nbsp; &nbsp; pFrom; <br>&nbsp; &nbsp; LPCSTR &nbsp; &nbsp; &nbsp; pTo; <br>&nbsp; &nbsp; FILEOP_FLAGS fFlags; <br>&nbsp; &nbsp; BOOL &nbsp; &nbsp; &nbsp; &nbsp; fAnyOperationsAborted; <br>&nbsp; &nbsp; LPVOID &nbsp; &nbsp; &nbsp; hNameMappings; <br>&nbsp; &nbsp; LPCSTR &nbsp; &nbsp; &nbsp; lpszProgressTitle; <br>} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT; <br><br>相应的pascal就是:<br>type <br>&nbsp; &nbsp; _SHFILEOPSTRUCTA = packed record<br>&nbsp; &nbsp; Wnd: HWND;<br>&nbsp; &nbsp; wFunc: UINT;<br>&nbsp; &nbsp; pFrom: PAnsiChar;<br>&nbsp; &nbsp; pTo: PAnsiChar;<br>&nbsp; &nbsp; fFlags: FILEOP_FLAGS;<br>&nbsp; &nbsp; fAnyOperationsAborted: BOOL;<br>&nbsp; &nbsp; hNameMappings: Pointer;<br>&nbsp; &nbsp; lpszProgressTitle: PAnsiChar; { only used if FOF_SIMPLEPROGRESS }<br>&nbsp; end; <br>hwnd:用来显示操作状态的对话框句柄。 例中是form1的句柄<br>wFunc:执行的操作。可以是以下各值:(例中是FO_COPY)<br>&nbsp; &nbsp; &nbsp; &nbsp; FO_COPY:拷贝pfrom域中指定的(目录,例中是'c:/a')到pto中指定的位置(例中为'c:/b') <br>&nbsp; &nbsp; &nbsp; &nbsp; FO_DELET:删除pfrom中指定的文件. &nbsp; (pTo不用) <br>&nbsp; &nbsp; &nbsp; &nbsp; FO_MOVE:移动PFrom中指定的文件到pto中指定的位置。 &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; FO_RENAME:给PFrom中指定的文件改名。<br>pFrom:指定一个或多个源文件名的缓冲区地址。多个名字必须用NULL分隔。名字列表必须用两个NULL(nil,'/0')来结束。<br>pTo:目标文件或目录名缓冲区地址。 如果fFlags域指定FOF_MULTIDESTFILES,缓冲区可以包含多个目标文件名。多个名字必须用NULL分隔。名字列表必须用两个NULL(nil,'/0')<br>fFlags :控制操作的标志,可以是以下各值组合:<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_ALLOWUNDO:保留Undo信息, 如果pFrom没有包含全的绝对的路径或文件名此值忽略。<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_CONFIRMMOUSE:没有实现.<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_FILESONLY:只有文件名使用通配符时(*.*)才对文件操作。<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_MULTIDESTFILES: &nbsp;pTo域指一定了多个目标文件.(一个对就一个源文件) 而不是指定一个目录来存放所有源文件 &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_NOCONFIRMATION:所有显示的对话框全部选择yes to all<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_NOCONFIRMMKDIR: 如果需要创建一个新目录不确认。<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_NOCOPYSECURITYATTRIBS: &nbsp;4.71. Microsoft&amp;reg; Windows NT&amp;reg; only. 安全属性不复制.<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_NOERRORUI:发生错误时不提供用户接口。<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_RENAMEONCOLLISION: &nbsp;move,copy,rename操作时如目标文件存在,给操作的文件另起一个名字。<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_SILENT:不显示进度对话框<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_SIMPLEPROGRESS:显示进度对话框但不显示文件名。<br>&nbsp; &nbsp; &nbsp; &nbsp; FOF_WANTMAPPINGHANDLE:如果指定了FOF_RENAMEONCOLLISION 当任何文件改名时将填写hNameMappings 域<br>fAnyOperationsAborted:当用户在完成前取消任何文件操作时赋值TRUE,否则FALSE.<br>hNameMappings:一个包含SHNAMEMAPPING结构数组的文件名映射对象句柄. 每一个(SHNAMEMAPPING)结构包括一个旧的或新的目录名为了每一个移动的复制的改名的文件。这个域仅在fFlags域包括FOF_WANTMAPPINGHANDLES标志时使用。句柄必须使用SHFreeNameMappings来释放(用完后)<br>lpszProgressTitle :进程对话框的标题串地址。仅在fFlags中包括FOF_SIMPLEPROGRESS标志时使用。<br><br>如果pFrom和pTo不是一个绝对目录时,当前目录从全局当前盘符和当前目录中取得,同时目录设置由GetCurrentDirectory
 
FOF_NOCONFIRMATION
 
接受答案了.
 
后退
顶部