用VB结束Excel的进程

  1. '窗体中放一个默认的按钮
  2. Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As LongByVal th32ProcessID As LongAs Long
  3. Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
  4. Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
  5. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As LongAs Long
  6. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
  7.                           ByVal blnheritHandle As LongByVal dwAppProcessId As LongAs Long
  8. Private Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, _
  9.                           ByVal uExitCode As LongAs Long
  10. Private Type PROCESSENTRY32
  11.     dwSize   As Long
  12.     cntUsage   As Long
  13.     th32ProcessID   As Long
  14.     th32DefaultHeapID   As Long
  15.     th32ModuleID   As Long
  16.     cntThreads   As Long
  17.     th32ParentProcessID   As Long
  18.     pcPriClassBase   As Long
  19.     dwFlags   As Long
  20.     szExeFile   As String * 1024
  21. End Type
  22. Const TH32CS_SNAPHEAPLIST = 
  23. Const TH32CS_SNAPPROCESS = 
  24. Const TH32CS_SNAPTHREAD = 
  25. Const TH32CS_SNAPMODULE = 
  26. Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
  27. Const TH32CS_INHERIT = 
  28. Private Sub Command1_Click()
  29.     Dim my     As PROCESSENTRY32
  30.     Dim l     As Long
  31.     Dim l1     As Long
  32.     Dim FileName As String * 9
  33.     Dim mProcID As Long
  34.     l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
  35.     If l Then
  36.         my.dwSize = 1060
  37.         If (Process32First(l, my)) Then         '遍历第一个进程
  38.             Do
  39.                 FileName = my.szExeFile
  40.                 If UCase(FileName) = "EXCEL.EXE" Then '当前的进程是Excel
  41.                     mProcID = OpenProcess(1&, -1&, my.th32ProcessID)
  42.                     TerminateProcess mProcID, 0&    '结束Excel进程
  43.                     Debug.Print "结束了" & FileName
  44.                     DoEvents
  45.                 End If
  46.             Loop Until (Process32Next(l, my) < 1)             '遍历所有进程直到返回值为False
  47.         End If
  48.         l1 = CloseHandle(l)
  49.     End If
  50. End Sub

用VB结束所有Excel的进程,用VB开发Exxcel的应用时,如果出现意外退出,Excel进程会驻留,以后再调用Excel时不能正常使用,所以有时有必要将所有Excel全部结束

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值