2016-04-23 5 views
0

Gibt es eine Möglichkeit, Ereignis wie Benutzer bestimmte Anwendung in Windows zu fangen?Abfangen von Benutzerereignis des Startens einer anderen App in Windows app

Ich habe eine Anforderung, wo, wenn Benutzer eine App speziell Windows Store App öffnet dann sollte meine App in der Lage sein, dieses Ereignis zu fangen.

Ich habe noch nicht damit begonnen. Ich will nur wissen ob es überhaupt möglich ist?

Wird es mit C# Entwicklung oder JavaScript Entwicklung möglich sein?

Ich bin wohler mit JavaScript.

+0

Es sei denn, Ihre Apps - sowohl die geöffnete als auch die, die das Ereignis erfassen - werden beide vom selben Entwickler veröffentlicht. Sie können diese Ereignisse nicht erfassen. Darüber hinaus können Sie Tracking-Ereignisse von Drittanbietern api verwenden, um diese Ereignisse nach der Implementierung in Ihrer App abzufangen. – Jerin

+0

Kennen Sie eine solche API? Framing es auf die andere Art, auf System-Ebene kann ich Einzelklick/Doppelklick-Ereignis fangen? Und dann überprüfen, ob das System die gewünschte App startet –

+1

Wieder müssen diese APIs zu Ihrer App hinzugefügt werden, die verfolgt werden müssen. Sie können Ihre App nicht installieren und verfolgen Sie nicht jede App, auf die Nutzer klicken, ähnlich wie Adware oder Malware. – Jerin

Antwort

0

Die zuverlässigste Lösung wird sein, einen Windows-Dienst zu schreiben. Sie können einen Windows-Dienst in C# schreiben, aber ich bezweifle, dass Sie es mit JavaScript tun können. Der Vorteil eines Windows-Dienstes (auch Treiber genannt) ist, dass er als Anwendung nicht sichtbar ist und daher weniger in die Quere kommen kann oder gestoppt werden kann. Hooking the native API and controlling process creation on a system-wide basis - CodeProject ist ein Beispiel in C++. Siehe auch Detecting Windows NT/2K process execution - CodeProject, die auch C++ verwendet; anscheinend verwendet es einen vorhandenen Dienst (Treiber), so dass Sie den Treiberteil nicht schreiben müssen.

Wenn Sie keinen Windows-Dienst verwenden, wäre C# immer noch eine bessere Lösung als JavaScript. Am einfachsten ist es, Windows Management Instrumentation (WMI) zu verwenden. Ein Beispiel mit C# außerhalb eines Windows-Dienstes finden Sie unter Wes' Puzzling Blog - Using WMI to monitor process creation, deletion and modification in .NET. Siehe auch Constantly monitor processes. Für JavaScript müssen Sie einen Permanent Event Consumer verwenden, wie in Monitoring Events (Windows) beschrieben. Ein Beispiel dafür finden Sie unter Creating WMI Permanent Event Subscriptions Using MOF - CodeProject.

+0

wow das ist eine Menge Dokumentation. Vielen Dank. Da dies das Beste ist, was ich zu diesem Thema bekommen kann und keine perfekte Lösung erwartet habe, markiere ich dies als Antwort. –