2010-11-21 37 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.