Tray Notify - Part I (Getting Started) | CodeGuru

Tray Notify – Part I (Getting Started)

1. Introduction This series illustrates how a Windows client app can communicate with a Windows Service application using a WCF service. Frequently it can be a challenge to communicate between a Windows Service and a Windows application. Prior to Vista, Windows allowed a service to be registered with the “Interact with Desktop” property allowing the […]

Written By
CodeGuru Staff
CodeGuru Staff
May 19, 2010
3 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

1. Introduction

This series illustrates how a Windows client app can communicate with a Windows Service application using a WCF service.

Frequently it can be a challenge to communicate between a Windows Service and a Windows application. Prior to Vista, Windows allowed a service to be registered with the “Interact with Desktop” property allowing the service to communicate with a client in the desktop of a logged in user. This was convenient because the service could display data in the user’s desktop. Since Vista, this practice is no longer recommended due to security concerns.

Since interacting with the desktop is no longer an option, one of the challenging problems to overcome is how a Windows Service can communicate with applications running on a logged on user desktop. The difficulty is that a Windows Service runs on a different desktop (session 0) than user desktops (session n). While there are ways to overcome this problem such as enumerating current users, obtaining a handle to their desktops and so on, solving the various issues that arise with this approach isn’t trivial.

Another approach is to use some form of interprocess communication and treat the Windows Service as a ‘server’ and require that the Windows client applications register with the ‘server’ on client start up. The service can then use the interprocess communication to notify clients of specific events or, in a less than ideal scenario, users could poll the service for changes.

The title of this article describes our approach – we will be using a WCF service to communicate between a Windows Service and a WPF Taskbar Tray application.

Our sample code will illustrate monitoring file change events from the Windows service and sending out file change notications to the task bar tray applications using the WCF service.

Figure 1.1 is a screen shot of the notification window that appears when a users makes changes to any file in the “My Documents” folder.
Figure 1.1

Since we need to cover a significant amount of ground and several different WxF technologies, we’ll break the discussion into four parts.

2. Architecture

2.1. Overview

As mentioned our architecture is a Windows Service which hosts a WCF service used to communicate with a client taskbar application. The WCF service code monitors the My Documents folder of each user running the client, and sends a notification to the clients via the WCF. On startup, each client app registers itself with the WCF service. Figure 2.1 is a simple diagram outlining the approach.


Figure 2.1

About the Author

Arjay Hawco is an application developer/architect and Microsoft MVP who works with the latest WxF .Net technologies. He is also cofounder of Iridyn, Inc, a software consulting firm.

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.