我想为自己编写一个简单的服务来跟踪我白天使用的程序以及我在这些程序上花费了多少时间。
我如何想象这样一个程序的工作?我有一个在我的 PC 后台运行的程序,它将监视当前的活动窗口以及它处于活动状态的程度。这种类型的数据将被发送到服务器:
Процесс Был активен
phpstrom.exe 3600
好吧,那么这些数据就会以图表的形式展现出来。
问题 - 是否可以在 C# 中实现?不幸的是,我没有为 Windows 开发软件的经验,所以我不知道我需要使用什么。您能否建议一种技术和示例来说明如何获取当前活动窗口的进程名称?
你想要的可以使用 winapi 函数来完成。您将需要两个:GetForegroundWindow,GetWindowThreadProcessId
通过链接,您可以找到函数参数的描述以及它们所在的 DLL。它们的描述必须在 c# 中声明如下:
之后,就可以使用它们了。第一个函数获取活动窗口的句柄,第二个函数从窗口句柄获取进程 ID。该空间
System.Diagnostics有一个Process可用于获取过程数据的类。好吧,至少是窗口的标题。下面是一个使用示例:具体来说,我没有解决这样的问题,但显然你需要:
GetForegroundWindow()- 获取活动窗口的句柄;GetWindowThreadProcessId()- 通过句柄获取PID;GetProcessImageFileName()- 通过进程句柄获取二进制文件的名称。