CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

用API删除文件的问题,急死人了

楼主zsoft(老曾)2005-01-09 11:58:16 在 VB / API 提问

想用api函数删除文件,因为kill   不能放在回收站中  
    用SHFileOPeration   函数,提示   找不到dll入口点,SHFileOPerationA   in   shell32.dll  
    我的各种声明应该是没问题的(复制vbapi工具的)哪位老大用过这个函数,请指点迷津 问题点数:100、回复次数:9Top

1 楼zsoft(老曾)回复于 2005-01-09 11:59:55 得分 0

我用的是win2003,应该跟操作系统没关系吧Top

2 楼zsoft(老曾)回复于 2005-01-09 12:02:01 得分 0

我用这个dshell32的shellexecute都可以调用Top

3 楼yingxiangchen(Ivan)回复于 2005-01-09 12:04:42 得分 50

Option   Explicit  
   
   
  Private   Declare   Function   SHFileOperation   Lib   "shell32.dll"   Alias   "SHFileOperationA"   (lpFileOp   As   ToBin)   As   Long  
   
  Private   Type   ToBin  
  hwnd   As   Long  
  wFunc   As   Long  
  pFrom   As   String  
  pTo   As   String  
  fFlags   As   Integer  
  fAnyOperationsAborted   As   Long  
  hNameMappings   As   Long  
  lpszProgressTitle   As   Long  
  End   Type  
   
  Const   FO_DELETE   =   &H3  
  Const   FOF_ALLOWUNDO   =   &H40  
  Const   SHERB_NORMAL   =   &H0  
   
  '删除文件到回收站  
  Private   Sub   Command1_Click()  
  Dim   Go   As   ToBin  
  Dim   strFile   As   String  
  With   CommonDialog1  
  .Filter   =   "('.bak)|'.bak"  
  .DialogTitle   =   "ɾ³ýÎļþ"  
  .ShowOpen  
  strFile   =   .FileName  
  End   With  
   
  With   Go  
  .wFunc   =   FO_DELETE  
  .pFrom   =   strFile  
  .fFlags   =   FOF_ALLOWUNDO  
  End   With  
   
  SHFileOperation   Go  
  End   SubTop

4 楼pcwak()回复于 2005-01-09 12:08:03 得分 20

少了下面这个类型  
   
    Private   Type   SHFILEOPSTRUCT  
                  hwnd   As   Long  
                  wFunc   As   Long  
                  pFrom   As   String  
                  pTo   As   String  
                  fFlags   As   Integer  
                  fAnyOperationsAborted   As   Long  
                  hNameMappings   As   Long  
                  lpszProgressTitle   As   String  
  End   TypeTop

5 楼dongge2000(目前叫西西了)回复于 2005-01-09 12:15:30 得分 0

UPTop

6 楼dongle2001(dl)回复于 2005-01-09 15:19:21 得分 0

.Filter   =   "('.bak)|'.bak"改成.Filter   =   "(*.bak)|*.bak"  
  别的部分没问题,检查shell32.dll,有可能是版本不对Top

7 楼tztz520(午夜逛街)回复于 2005-01-09 15:36:52 得分 30

Private   Const   FO_DELETE   =   &H3       '   删除  
  Private   Const   FOF_ALLOWUNDO   =   &H40   '   移入回收站  
  Private   Type   SHFILEOPSTRUCT  
          hwnd   As   Long  
          wFunc   As   Long  
          pFrom   As   String  
          pTo   As   String  
          fFlags   As   Integer  
          fAborted   As   Boolean  
          hNameMaps   As   Long  
          sProgress   As   String  
  End   Type  
   
  Private   Declare   Function   SHFileOperation   Lib   "shell32.dll"   Alias   "SHFileOperationA"   (lpFileOp   As   SHFILEOPSTRUCT)   As   Long  
   
   
  Sub   command1_click()  
          Dim   SHFileOp   As   SHFILEOPSTRUCT  
           
          With   SHFileOp  
                  .wFunc   =   FO_DELETE  
                  .pFrom   =   "f:\abc\ddd.txt"  
                  .fFlags   =   FOF_ALLOWUNDO  
          End   With  
          SHFileOperation   SHFileOp  
  End   SubTop

8 楼zsoft(老曾)回复于 2005-01-09 16:31:30 得分 0

诸位老大,是提示:找不到dll入口点,SHFileOPerationA   in   shell32.dll  
  意思好象是,在我   shell21.dll   里,没有shfileoperationA   这个函数,难道真的是win2003   有不同吗Top

9 楼zsoft(老曾)回复于 2005-01-09 16:36:12 得分 0

哈哈,在问专家里找到答案  
   
  这是VB的BUG,VB5和VB6都有这个问题。    
          将声明中SHFileOperationA前面的空格删除就可以了。    
  Top

相关问题

  • 初初等::删除文件的API?
  • 急死人的事啊~有谁能帮我吗?有关删除文件后恢复的问题
  • 删除文件!只读文件用filedelete()和API——deletefile()都不能删除。怎么删除?
  • 删除文件的API,不提示是否删除而直接将文件删除,谢谢
  • 删除文件
  • 删除文件??
  • 文件删除
  • 删除文件
  • 删除文件
  • 删除文件

关键词

  • 函数
  • 文件
  • dll
  • shfileoperationa
  • 删除文件

得分解答快速导航

  • 帖主:zsoft
  • yingxiangchen
  • pcwak
  • tztz520

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo