在我的咨询公司,我们使用一些非常昂贵的模拟软件。我需要一种方法来监视这些应用程序/进程的使用情况(在后台,使用C#)。我们的想法是,当有人运行特定应用程序时,系统会提示他们输入作业名称。然后,当他们关闭程序时,他们使用它的时间被发送到驻留在网络上的数据库。通过这种方式,我们可以通过以美元/分钟为基础向客户收费来收回软件的成本。除了提示之外,该程序对于用户来说几乎是不可见的。
我想过几种方法,但我不确定最好的方法:
有一个在启动时运行的程序,只有一个托盘图标。我想那时我必须有一个后台工作人员连续监视进程,可能会在线程休眠,每5分钟左右检查一次进程。
使用类似Quartz.net的东西,在启动时使用托盘图标。如果这甚至适用于每分钟。我对Quartz.net不是很熟悉,但从我的研究看起来它可能是可行的。
使用某种Windows服务。这是我最不熟悉的。
哪种方法最有成效?感谢
答案 0 :(得分:0)
您可以编写一个简单的C#程序,在执行时收集所需的信息和开始时间。
然后使用Process
类执行模拟软件。
等待进程使用WaitForExit()
结束,并执行执行时间等所需的任何操作。
所以基本上你最终得到的应用程序只是收集所需的信息,启动主应用程序,等待应用程序结束,并执行总执行时间所需的一切。只要对用户不可见,您可以在等待应用程序结束时最小化主窗口(也可以作为收集所需信息的表单)。
这是在C#中启动可执行文件的一个小例子。
private void LaunchApp()
{
Process proc = new Process();
/* we are going to assume wordpad is installed on workstation */
/* collect needed info and time */
proc.StartInfo.FileName = "Wordpad.exe";
proc.StartInfo.Arguments = "SomeFile.txt";
proc.Start();
proc.WaitForExit();
/* App has ended. Now process execution time etc. */
}