In this article, I’ll show you how to turn your console / winform application to Windows System Tray application. Cinchoo framework provides a single hosting infrastructure to turn your application either Windows Service or Windows Tray application through configuration.
Console Application
Here is how you can do it for console application
1. Create a new ‘Console Application‘ from VS.NET
2. Add reference to Cinchoo.Core.dll
3. Add namespace Cinchoo.Core
4. Create a class derived from ChoApplicationHost as below
[RunInstaller(true)] public class AppHost : ChoApplicationHost { protected override void OnStart(string[] args) { //TODO: Application Startup code goes here base.OnStart(args); } }
Decorating the above class with RunInstallerAttribute will make the application to be run as Windows Service. And override OnStart method, where application start up code placed there.
5. In the main entry, do as below.
public class Program { static void Main(string[] args) { ChoApplication.Run(new AppHost(), args); } }
That’s all, you application is now ready to run as self installable windows service application or Windows Tray application.
Here is how to turn your application to Windows Tray application. In ChoCoreFrx.xml file, set ‘turnOn’ flag to ‘true’ in trayApplicationBehaviourSettings element.
<?xml version="1.0" encoding="utf-8"?> <configuration> <globalApplicationSettings applicationId="TestApplication.exe" eventLogSourceName="TestApplication.exe" turnOnConsoleOutput="false"> <behaviourSettings hideWindow="false" bringWindowToTop="false" alwaysOnTop="false" runAtStartup="false" runOnceAtStartup="false" singleInstanceApp="false" activateFirstInstance="false" /> <trayApplicationBehaviourSettings turnOn="true" showInTaskbar="true" hideMainWindowAtStartup="true" hideTrayIconWhenMainWindowShown="false" trayAppTurnOnMode="OnMinimize" /> <appConfigPath /> </globalApplicationSettings> </configuration>
Other parameters
- showInTaskbar – true, will show the application in Taskbar. false, otherwise.
- hideMainWindowAtStartup – true, will hide the window at the application startup. Otherwise false.
- hideTrayIconWhenMainWindowShown – true, tray application icon will hidden when the main windows shown. Otherwise false.
- trayAppTurnOnMode – This option is applicable to WinForm application only. Possible options are OnMinimize, OnClose, OnMinimizeOrClose.
WinForm Application
Below are the steps to turn your winform application into Windows Tray application
1. Create a new ‘WinForm Application‘ from VS.NET
2. Add reference to Cinchoo.Core.dll
3. Add namespace Cinchoo.Core
4. Create a class derived from ChoApplicationHost and IChoWinFormApp as below
[RunInstaller(true)] public class AppHost : ChoApplicationHost, IChoWinFormApp { MainForm form = new MainForm(); public AppHost() { } public Form MainFormWindow { get { return form; } } public ContextMenu GetContextMenu(ContextMenu contextMenu) { //Build the context menu items return contextMenu; } public string TooltipText { get { return null; } } public System.Drawing.Icon TrayIcon { get { return null; } } public string BalloonTipText { get { return null; } } protected override void OnStart(string[] args) { base.OnStart(args); } }
Decorating the above class with RunInstallerAttribute will make the application to be run as Windows Service. And override OnStart method, where application start up code placed there.
5. In the main entry, do as below.
public class Program { static void Main(string[] args) { ChoApplication.Run(new AppHost(), args); } }
Thats all. Try it.
Image may be NSFW.
Clik here to view.
Clik here to view.
