Foxtable(狐表)用户栏目专家坐堂 → 如何关闭一个文件


  共有5514人关注过本帖树形打印复制链接

主题:如何关闭一个文件

帅哥哟,离线,有人找我吗?
zhsenchzhi
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2015/1/14 11:18:00 [只看该作者]


根据提示,我写了一个 内部函数,来kill  excel 和 winword的进程,每次来调用它,可是又出现一个奇怪的问题, 问题出在 p.kill上,如果当前打开的文档也是一个excel火鹤word,就会出现问题, 我解决的方法是加上 try, 问题是 如果出现问题后,在 catch内 弹出一个MessageBox,就能够抓住并解决异常,并且把别的进程杀掉,可如果不弹出一个MessageBox,就不能杀掉别的进程,例如 catch里为空,或者一个别的语句, 我是想并不需要弹出一个MessageBox,这样会给用户造成困惑,请问catch里面有什么特殊吗,为什么必须弹出MessageBox才能解决异常呢? 如下所示

Try
                p.kill
            Catch ex As Exception
                'MessageBox.Show(psNames(i),"提示",MessageBoxButtons.OK)    ‘把这条语句放开就没事
                Dim ss As Integer =1    仅仅执行这个,或者什么都不执行,就不行
                ss=2
            End Try



完整代码如下

Dim psNames(7) As String
psNames(0) = "excel"
psNames(1) = "EXCEL"
psNames(2) = "excel.exe"
psNames(3) = "EXCEL.EXE"
psNames(4) = "winword"
psNames(5) = "WINWORD"
psNames(6) = "winword.exe"
psNames(7) = "WINWORD.EXE"

For i As Integer = 0 To psNames.Length -1
    Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName(psNames(i))
    For Each p As System.Diagnostics.Process In ps
        If p.MainWindowTitle = Nothing  Then
            
            Try
                p.kill
            Catch ex As Exception
                'MessageBox.Show(psNames(i),"提示",MessageBoxButtons.OK)
                Dim ss As Integer =1
                ss=2
            End Try
            
            
        End If
    Next
    
Next

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/14 11:21:00 [只看该作者]

 看弹出什么错误啊。截图发上来。

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/1/14 11:23:00 [只看该作者]

可能问题在于需要时间. 你Mesagebox弹出刚好给出了足够的时间.

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2015/1/14 11:31:00 [只看该作者]

如果 在 catch 里面 执行  MessageBox.Show(psNames(i),"提示",MessageBoxButtons.OK),就会弹出以下对话框,显示出错进程的名字,这是对的


此主题相关图片如下:123.png
按此在新窗口浏览图片

如果 catch 里面什么也不执行,或者仅仅执行类似下面的语句

 Dim ss As Integer =1
                ss=2

则会在稍后执行删除文件的语句时,弹出以下对话框,说明之前的进程没有kill掉,还在,事实上从文件中发现,这些文件的确还在,但是 在上面的情况中被删除了,就是说 执行MessageBox.Show(psNames(i)),就能保证把能删除的进程都删除掉,之后的删除文件也能删除掉


此主题相关图片如下:456.png
按此在新窗口浏览图片


请问这个 catch里面需要执行什么样的特殊语句才能保证exception被抓住并解决呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/14 11:34:00 [只看该作者]

msgbox(ex.Message)

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2015/1/14 11:39:00 [只看该作者]

仅此而已


图片点击可在新窗口打开查看此主题相关图片如下:789.png
图片点击可在新窗口打开查看

还需要别的信息吗?

[此贴子已经被作者于2015-1-14 11:40:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2015/1/14 11:45:00 [只看该作者]

如果是需要时间,foxtable应该怎样延时呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/14 11:51:00 [只看该作者]

 文件权限问题吧

 

1、打开一个文件夹,按“工具-文件夹选项”,选“查看”选项卡,在中间框中找到“使用简单文件共享(推荐)”,去掉它前面的勾,确定。
2、再选中你的这个excel文件,右键选“属性”,找到“安全”选项卡,在“组或用户名称”框中看一下,有没有你当前在windows登录的用户名,这个分两种情况:
a、如果有,看下下面框中的权限,有没有打勾(应该打上勾的)。
b、如果没有,则按“添加”,在另一个出现的对话框中按“高级”、“立即查找”,找到你的当前windows用户登录名,选中,确定即可。


二、文件属性里没有“安全”选项?
首先,如果你的某盘是FAT32的,无安全选项是正常的。只有NTFS的才有该选项。
解决方法:文件夹选项--查看--取消“使用简单文件共享”。

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2015/1/14 12:13:00 [只看该作者]

不是的,出现拒绝访问这个提示,是因为 系统想kill正在webbrowser正在显示的文件,当然kill不掉了,比较奇怪的是 在 catch中执行MessageBox.Show(psNames(i),"提示",MessageBoxButtons.OK), 就能正常处理异常,并kill别的进程, 不执行这个,就不能处理异常,难道真的是因为时间的原因,如果是,应该怎样写 一个延时语句呢,

 回到顶部
帅哥哟,离线,有人找我吗?
zhsenchzhi
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:423 积分:3196 威望:0 精华:0 注册:2013/5/10 10:01:00
  发帖心情 Post By:2015/1/14 12:26:00 [只看该作者]

到底有没有办法解决呢?

 回到顶部
总数 47 上一页 1 2 3 4 5 下一页