一个结速进程的方法 (杀死Excel进程的方法)

本文介绍了一个实用的方法来批量关闭运行中的Excel进程,并提供了一种设置,用于在打开Excel报表时统一设置为不提示更新链接,简化了日常办公流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/// <summary>
  /// 编写者:孙二永
  /// 编写日期:2006-09-17
  /// 函数作用:杀死计算机上的所有用户自己开启的Excel进程
  /// </summary>
  public static void killExcel()
  {
   foreach(Process p in Process.GetProcessesByName("EXCEL"))
   {
    try
    {
     p.Kill();
    }
    catch
    {
     //在杀死非应用程序开启的进程时,会抛出错误,直接抛弃错误,不用处理。
    }
   }
  }
  /// <summary>
  /// 设置报表打开时是否提示更新,都回答否
  /// 日期:2006-09-17
  /// </summary>
  /// <param name="src">Excel的文件名</param>
  /// <param name="App">excel的进程</param>
  /// <returns></returns>
  private static Workbook openExcelFile(string src,Application App)
  {
   Workbook Book=null;
   //_Open方法的第二个参数设置false,那么报表提示是否更新链接时,一律回答否。
   //针对个别报表不提示更新链接的情况,在catch块中进行处理。
   try
   {
    Book=App.Workbooks._Open(src,
     false,Missing.Value,Missing.Value,Missing.Value
     ,Missing.Value,Missing.Value,Missing.Value,Missing.Value
     ,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
   }
   catch
   {
    Book=App.Workbooks._Open(src,
     Missing.Value,Missing.Value,Missing.Value,Missing.Value
     ,Missing.Value,Missing.Value,Missing.Value,Missing.Value
     ,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
   }
   return Book;
  }

转载于:https://www.cnblogs.com/suneryong/archive/2007/06/08/776566.html

要在MFC代码中杀死当前Excel进程,可以使用以下步骤: 1. 首先,需要包含Windows.h和Tlhelp32.h头文件,以便使用相关函数和数据构。 2. 使用CreateToolhelp32Snapshot函数创建一个进程快照,获取当前正在运行的所有进程的信息。 3. 使用Process32First和Process32Next函数遍历进程快照,找到Excel进程的PID(进程ID)和进程句柄。 4. 使用OpenProcess函数打开Excel进程,得到进程句柄。 5. 使用TerminateProcess函数终止Excel进程,传入进程句柄和退出码作为参数。 6. 最后,使用CloseHandle函数关闭进程句柄,释放资源。 以下是一个示例代码,展示如何在MFC中杀死当前Excel进程: ```cpp #include <Windows.h> #include <Tlhelp32.h> void KillExcelProcess() { DWORD pid = 0; HANDLE hProcessSnap; PROCESSENTRY32 pe32; // 创建进程快照 hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) { return; } // 设置PROCESSENTRY32构体大小 pe32.dwSize = sizeof(PROCESSENTRY32); // 获取第一个进程的信息 if (!Process32First(hProcessSnap, &pe32)) { CloseHandle(hProcessSnap); return; } // 遍历进程快照,查找Excel进程 do { if (wcsstr(pe32.szExeFile, L"EXCEL.EXE")) { pid = pe32.th32ProcessID; break; } } while (Process32Next(hProcessSnap, &pe32)); CloseHandle(hProcessSnap); if (pid != 0) { // 打开Excel进程 HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pid); if (hProcess != NULL) { // 终止Excel进程 TerminateProcess(hProcess, 0); CloseHandle(hProcess); } } } ``` 以上代码可以作为参考,在MFC应用程序中使用KillExcelProcess函数来杀死当前Excel进程。请注意,杀死进程可能会导致数据损失,建议在适当的时机使用此功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值