If you click on the window service and then go to the properties and then go to the tab "log on" there is a option whether you want ur window service to interact with desktop or not. This window service will interact programmatically with desktop.

Here is the sample code

private void ProjectInstaller_Committed(object sender, InstallEventArgs e)
{

serviceController.ServiceName = "Service1";

ConnectionOptions coOptions = new ConnectionOptions();

coOptions.Impersonation = ImpersonationLevel.Impersonate;

ManagementScope mgmtScope = new System.Management.ManagementScope(@"root\CIMV2", coOptions);

mgmtScope.Connect();

ManagementObject wmiService;

wmiService = new ManagementObject("Win32_Service.Name='" + this.serviceController.ServiceName + "'");

ManagementBaseObject InParam = wmiService.GetMethodParameters("Change");

InParam["DesktopInteract"] = true;

ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null);

this.serviceController.Start();
}