2010-11-21 34 views
2

我想写一个应用程序,将给定一些网络输入,模拟鼠标移动,点击和键盘输入。如何以及为什么我想这样做是一个不同的讨论:-)我想从SO听到什么是这样的应用程序/服务的最佳模型?Windows服务或托盘/ NotifyIcon?

  • 我应该运行 坐在后台窗口服务为 系统?
  • 或者我应该做一个tray app 坐在托盘监听和 操纵用户的输入?

我还没有开始研究它,所以我想象中的一些事情会让我感动起来,这与服务没有交互式会话和/或权限有关。

什么我应该预见或记住?

回答

2

亚伦给了所有的参数,为什么你不能没有托盘的应用程序做,但为什么添加通过IPC应用通信的服务的复杂性?当你需要有一些代码,即使没有用户登录运行

服务是有用的。这不是这里的情况吧?

除非你必须操纵同时登录的多个用户的输入,否则我只会使用托盘应用程序执行监视网络事件和操作用户输入的任务,这对我来说更简单。

+0

赏金被自动授予,但这实际上使我确信托盘只有:-)谢谢Sébastien – 2011-02-25 04:02:34

+0

无后顾之忧,很高兴我可以帮助:) – 2011-02-25 13:20:02

8

如果你打算运行在Vista和Windows 7的代码,Windows服务是不会有足够的,因为他们不能与用户桌面了互动。如果你要操纵用户输入,你需要一个运行在用户会话中的程序。

一种替代方法是写一个服务用于监视网络的事件,当用户登录在启动客户端,并使用IPC在两者之间进行通信。

编辑:网络服务应该能满足服务特权。

+0

是的,这就是我所害怕的,至少我的怀疑得到了证实。我只是将该服务作为网络服务运行,还是应该在本地用户帐户下运行?在IPC上,我可以只使用WCF服务从一个进程到另一个进程进行通信,还是有更好的机制?我会用C#/。NET编写这些应用程序btw – 2011-02-17 18:24:36

+0

http://social.msdn.microsoft.com/forums/en-US/windowssdk/thread/f8f91e8f-5954-43a7-8bc4-80ed2ff1e3b1/ – 2011-02-23 23:36:44

3

正如Aaron所建议的,有一个Windows服务监控网络。

对于用户会话中的进程,您可以使用WCF,并且命名管道可能是最好的传输方式,但是您需要以正确的方式进行设计,以便跨越会话边界。通过双工协定使服务进程成为WCF服务:用户会话进程调用要注册的服务,然后事件在回调协议上传递回用户会话进程。 See this question for an explanation of the issues.