有没有办法捕获用户在Windows中打开某个应用程序的事件?
我有一个要求,如果用户打开任何应用程序专门的Windows商店应用程序,那么我的应用程序应该能够捕获该事件。
我还没有开始。我只是想知道它是否可能?
是否可以使用C#开发或JavaScript开发?
我对JavaScript感觉更舒服。
答案 0 :(得分:0)
最可靠的解决方案是编写Windows服务。您可以在C#中编写Windows服务,但我怀疑您是否可以使用JavaScript执行此操作。 Windows服务(也称为驱动程序)的优点是它不作为应用程序可见,因此不太可能妨碍或停止。 Hooking the native API and controlling process creation on a system-wide basis - CodeProject是C ++中的一个例子。另请参阅同样使用C ++的Detecting Windows NT/2K process execution - CodeProject;显然它使用现有服务(驱动程序),因此您不需要编写驱动程序部分。
如果不使用Windows服务,那么C#仍然是比JavaScript更好的解决方案。最简单的方法是使用Windows Management Instrumentation(WMI)。有关在Windows服务之外使用C#的示例,请参阅Wes' Puzzling Blog - Using WMI to monitor process creation, deletion and modification in .NET。另请参阅Constantly monitor processes。对于JavaScript,您需要使用Monitoring Events (Windows)中所述的永久事件使用者。有关示例,请参阅Creating WMI Permanent Event Subscriptions Using MOF - CodeProject。