用VB结束Excel的进程
2008-12-17 17:34
447 查看
'窗体中放一个默认的按钮
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, _
ByVal uExitCode As Long) As Long
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 1024
End Type
Const TH32CS_SNAPHEAPLIST =
Const TH32CS_SNAPPROCESS =
Const TH32CS_SNAPTHREAD =
Const TH32CS_SNAPMODULE =
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT =
Private Sub Command1_Click()
Dim my As PROCESSENTRY32
Dim l As Long
Dim l1 As Long
Dim FileName As String * 9
Dim mProcID As Long
l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If l Then
my.dwSize = 1060
If (Process32First(l, my)) Then '遍历第一个进程
Do
FileName = my.szExeFile
If UCase(FileName) = "EXCEL.EXE" Then '当前的进程是Excel
mProcID = OpenProcess(1&, -1&, my.th32ProcessID)
TerminateProcess mProcID, 0& '结束Excel进程
Debug.Print "结束了" & FileName
DoEvents
End If
Loop Until (Process32Next(l, my) < 1) '遍历所有进程直到返回值为False
End If
l1 = CloseHandle(l)
End If
End Sub
用VB结束所有Excel的进程,用VB开发Exxcel的应用时,如果出现意外退出,Excel进程会驻留,以后再调用Excel时不能正常使用,所以有时有必要将所有Excel全部结束
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, _
ByVal uExitCode As Long) As Long
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 1024
End Type
Const TH32CS_SNAPHEAPLIST =
Const TH32CS_SNAPPROCESS =
Const TH32CS_SNAPTHREAD =
Const TH32CS_SNAPMODULE =
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT =
Private Sub Command1_Click()
Dim my As PROCESSENTRY32
Dim l As Long
Dim l1 As Long
Dim FileName As String * 9
Dim mProcID As Long
l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If l Then
my.dwSize = 1060
If (Process32First(l, my)) Then '遍历第一个进程
Do
FileName = my.szExeFile
If UCase(FileName) = "EXCEL.EXE" Then '当前的进程是Excel
mProcID = OpenProcess(1&, -1&, my.th32ProcessID)
TerminateProcess mProcID, 0& '结束Excel进程
Debug.Print "结束了" & FileName
DoEvents
End If
Loop Until (Process32Next(l, my) < 1) '遍历所有进程直到返回值为False
End If
l1 = CloseHandle(l)
End If
End Sub
用VB结束所有Excel的进程,用VB开发Exxcel的应用时,如果出现意外退出,Excel进程会驻留,以后再调用Excel时不能正常使用,所以有时有必要将所有Excel全部结束
相关文章推荐
- VB程序中怎么样结束EXCEL进程
- VB.net强制结束指定进程
- 结束excel进程
- 操作excel进程结束不了的方法
- 关于ASP.NET中调用Excel组件不能结束进程的解决方法
- (转)excel导入到数据库(结束进程)
- VB 结束进程
- [C#]结束Excel的进程的方法
- 关于.NET程序中使用Excel对象后,如何结束残留的Excel进程。
- 关于.NET程序中使用Excel对象后,如何结束残留的Excel进程
- C#中如何结束Excel (Office)进程
- 结束Excel的进程的方法
- 导入Excel时,Excel进程excel.exe不能自动结束的问题
- ASP.NET控制EXCEL,完全结束进程
- WEB程序中使用EXCEL在服务器上无法结束进程的处理
- VB之操作excel后不能关闭excel进程的原因及解决方法
- vb读取xls文件而不打开excel进程 ado数据库方法读取xls
- 使用Excel COM组件导出数据后释放 Excel进程不能正常结束
- C#导出Excel后无法结束相应进程的解决办法
- VB 获取进程/模块信息 批量结束进程的代码