首页 > 解决方案 > c#在windows窗体应用程序中获取后台进程

问题描述

我正在构建一个员工监控应用程序,我必须在其中捕获员工使用的所有应用程序我想要应用程序名称、应用程序启动时间和应用程序关闭时间,以便我将这些数据保存到 sql server 中。

我仍然捕获进程开始时间和名称,但是当进程或应用程序被用户关闭时我遇到了问题。像一些应用程序,包括微软团队,当用户关闭我的代码时,我的代码永远不会被命中,因为微软团队在后台运行。当我从任务管理器结束任务微软团队时,我的代码就会执行。我正在使用 C# 进程类。任何可以帮助我的人

标签: c#winformsprocesswindows-services

解决方案


通过“关闭”,我假设您的意思是quit。像 Teams 这样的一些应用程序有一个选项(关闭时,保持应用程序运行),当右键单击Tasbbar >关闭窗口上的图标或单击右上角的X时,只会将应用程序最小化到 Windows任务托盘,离开Teams.exe跑步。所以从技术上讲,这种情况下的用户并没有退出/关闭 MS Teams 或类似的。

操作:

当我从任务管理器结束任务微软团队时,我的代码就会执行。

这是设计使然。您的代码仅在进程退出时执行,直到您终止它,Teams 仍在按照用户的意图运行。

使用On close, keep the application running选项,您的代码应该在用户说时执行:

  1. 右键单击任务栏上的团队图标选择退出
  2. 通过任务管理器杀死它或
  3. 退出 Windows

推荐阅读