写了一个下载文件的程序,下载完后想把临时文件删除,但提示权限拒绝,请问这如何解决?临时文件位置:C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\T1S2CNT3\update[1].exe删除命令:kill C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5\T1S2CNT3\update[1].exe
试试,用 FindWindow API 函数找到它,然后发送 WM_CLOSE 消息关闭它。
偶是用一控件的
以前发的代码应该是这样的:(使了一个DIR命令而已,呵呵)
取段名是必须的,DOS命令的缘故
Option Explicit
Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath As String, ByVal lBuffer As Long) As LongPublic Function GetShortPath(strFileName As String) As String
Dim lngRes As Long, strPath As String
strPath = String$(165, 0)
lngRes = GetShortPathName(strFileName, strPath, 164)
GetShortPath = Left$(strPath, lngRes)
End FunctionPrivate Sub Command1_Click()
Text1.Text = GetShortPath("C:\Documents and Settings\zcsor\Local Settings\Temporary Internet Files")
End SubPrivate Sub Form_Click()
Dim stmp As String
Open "c:\11.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, stmp
Debug.Print stmp
Loop
Close #1
End SubPrivate Sub Form_Load()
On Error Resume Next '我懒,这就是防止文件不存在还删除产生错误而已
Kill "c:\11.txt"
Dim spath As String
spath = GetShortPath("C:\Documents and Settings\zcsor\Local Settings\Temporary Internet Files")
Me.Caption = spath
Shell "cmd.exe /c dir " & spath & " /s /w >> c:\11.txt", vbHide
End Sub如果是因为文件打开了,那我们可以查找所有进程,得到与文件名相同的那个(一般是这样),然后呢,杀了这个进程,删除文件即可。当然了,如果我们不去关进程就想删除文件,那操作就比较多一点,涉及到较多内容,可以参看“如何在运行时删除自身”的一个C代码,用相同的方法(主要是关闭文件句柄,内存映射等操作)来删除一个打开的文件。
测试时先点COMMAND,然后点一下窗体
Dim TemphWnd As Long
TemphWnd = FindWindow(vbNullString, "你的程序窗口标题") If TemphWnd Then SendMessage TemphWnd, WM_CLOSE, 0, 0
End Sub