Frage

Ich möchte eine App schreiben, die bei einigen Netzwerkeingaben Mausbewegungen, Klicks und Tastatureingaben simuliert. Wie und warum ich das tun möchte, ist eine andere Diskussion :-) Was würde ich gerne hören.

  • Sollte ich einen Windows -Dienst erstellen, der im Hintergrund als System läuft?
  • oder sollte ich a machen Tablett App Das befindet sich im Tablett und hört die Eingabe des Benutzers zu?

Ich habe nicht angefangen, daran zu arbeiten, daher würden einige der Dinge, die ich mir vorstellen würde, mit dem Service zu tun haben, der keine interaktive Sitzung und/oder Berechtigungen hat.

Etwas, das ich vorhersehen oder berücksichtigen sollte?

War es hilfreich?

Lösung

Aaron gab alle Argumente an, warum Sie nicht ohne die Tray -App verzichten können, aber warum die Komplexität eines Dienstes hinzufügen, der mit der App über IPC kommuniziert?

Ein Dienst ist nützlich, wenn Sie Code ausgeführt haben, auch wenn kein Benutzer angemeldet ist. Dies ist hier nicht der Fall, oder?

Wenn Sie die Eingabe mehrerer Benutzer, die gleichzeitig angemeldet sind, nicht manipulieren müssen, würde ich nur mit der Tablett -App eingehen, die beide Aufgaben zur Überwachung von Netzwerkereignissen und die Manipulation der Benutzereingaben ausführen. Für mich ist dies einfacher.

Andere Tipps

Wenn Sie beabsichtigen, Ihren Code auf Vista und Windows 7 auszuführen, reicht ein Windows -Dienst nicht aus, da er nicht mehr mit Benutzerdesktops interagieren kann. Wenn Sie Benutzereingaben manipulieren möchten, benötigen Sie ein Programm, das in der Sitzung des Benutzers ausgeführt wird.

Eine Alternative besteht darin, einen Dienst für die Überwachung der Netzwerkereignisse zu schreiben, den Client zu starten, wenn sich ein Benutzer anmeldet, und IPC zur Kommunikation zwischen beiden.

Bearbeiten: NetworkService sollte für Service -Privilegien ausreichen.

Wie Aaron vorschlug, haben Sie einen Windows -Service, der das Netzwerk überwacht.

Was den IPC für den Prozess in der Benutzersitzung betrifft, können Sie WCF verwenden, und ein benanntes Rohr ist wahrscheinlich der beste Transport, aber Sie müssen es richtig runden, um die Sitzungsgrenze zu erreichen. Machen Sie den Serviceprozess den WCF -Dienst mit einem Duplex -Vertrag: Der Benutzersitzungsprozess ruft den Dienst an, um sich zu registrieren, und dann werden Ereignisse im Rückrufvertrag an den Benutzersitzungsprozess übergeben. In dieser Frage finden Sie eine Erläuterung der Probleme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top