2017-08-31 68 views
0

我想用Windows服務打開一個氣球提示。 我可以在Windows窗體中執行此操作。是否有可能使用Windows服務?氣球工具提示使用Windows服務C#

+1

https://stackoverflow.com/questions/4237225/allow-service-to-interact-with-desktop-in-windows – Blorgbeard

+0

[允許服務與Windows桌面交互](https:// stackoverflow .com/questions/4237225/allow-service-to-interact-with-desktop-in-windows) – jHilscher

+0

在上面的文章中,它解釋瞭如何與Windows進行交互。但是如何通過服務交互來打開氣球工具提示?對不起,我是一個新手,C# –

回答

1

我之前已經實現了這個服務,使用命名管道。基本上你創建了兩個應用程序。

  • 用作命名管道服務器的Windows服務項目
  • 用托盤圖標,氣球和命名管道客戶

Windows服務推動對客戶端的消息

  • 一個WinForms應用程序連接,可能是運行winforms應用程序的系統上的多個用戶。

    的WinForms應用程序監聽在管的消息。一旦消息進入,您可以使氣球彈出。

    這是一個很酷的測試項目:https://www.codeproject.com/Tips/492231/Csharp-Async-Named-Pipes

    編碼愉快!

  • +0

    感謝您的回答,但有沒有一種方式沒有另外的程序並行運行? –

    +0

    不,沒有。一個Windows服務並不意味着有一個用戶界面。大多數服務在服務帳戶下運行,而不在運行explorer.exe的用戶帳戶下運行,因此是桌面用戶界面。爲什麼在一個項目中使用它很重要? –

    +0

    儘量保持它儘可能簡單。我會嘗試這種方法。感謝分享這篇文章 ! –

    0

    不能直接使用。一個Windows服務不會在用戶的會話中運行,它運行在它自己的特殊「服務會話」中。在該會話中顯示的工具提示不會顯示在用戶桌面上。

    來解決這個問題,通常的方法是有一個與用戶的登錄開始,不在任務欄上可見一個第二計劃。該程序使用某種形式的IPC(例如WCF)與服務交談,然後該服務可以告訴幫助程序根據需要顯示通知。

    +0

    我的想法,但有沒有並行運行的其他程序的方法嗎? –

    +0

    據我所知,我不知道任何。 –

    +0

    謝謝@ Scott Chamberlain –