Windows服务与托盘

lxwin01 2007-05-08 08:06:27
已经写好了服务,但是我想随着服务启动也启动托盘程序,做窗体进行设置已经写好服务目录下的配置文件和服务控制。
顺便问下,为什么在服务启动事件里写窗体没用?
...全文
717 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeProject-Jerry 2008-01-25
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/COM/SystemTrayIconInSvc.aspx
lxwin01 2007-05-10
  • 打赏
  • 举报
回复
服务实际上是可以与桌面交互的,但其程序似乎必须放在system32目录下
----------------------------
不需要必须放在system32目录下。
lxwin01 2007-05-10
  • 打赏
  • 举报
回复
交互的问题已经解决了,昨天忙忘记贴了,
// ReportLog log=ReportLog.GetReportLog();
// log.Init(@"D:\log.txt");
try
{
ConnectionOptions coOptions=new ConnectionOptions();
coOptions.Impersonation=ImpersonationLevel.Impersonate;
ManagementScope mgmtScope=new ManagementScope("\\root\\cimv2",coOptions);
mgmtScope.Connect();
ManagementObject wmiService;
wmiService=new ManagementObject("Win32_Service.Name='"+serviceInstaller.ServiceName+"'");
ManagementBaseObject InParam=wmiService.GetMethodParameters("Change");
InParam["DesktopInteract"]=true;
ManagementBaseObject OutParam=wmiService.InvokeMethod("Change",InParam,null);
if((string)wmiService["State"]=="Stopped")
wmiService.InvokeMethod("StartService",null);
}
catch(Exception ex)
{
throw new Exception(ex.Message,ex);
}
finally
{
// log.Flush();
// log.Release();
}
cancerser 2007-05-09
  • 打赏
  • 举报
回复
服务实际上是可以与桌面交互的,但其程序似乎必须放在system32目录下(要启动的带有winform的程序)
通常本人是不会这么写程序的,既然有托盘程序 为什么不直接都写在托盘里 而要分开写呢?
托盘程序整成开机启动不就可以了?
marvelstack 2007-05-09
  • 打赏
  • 举报
回复
windows service能否启动窗体进程?
http://faq.lvjiyong.com/item/1940/
lxwin01 2007-05-09
  • 打赏
  • 举报
回复
有个问题,怎么在安装服务的时候自动的设置与桌面交互?
lxwin01 2007-05-09
  • 打赏
  • 举报
回复
/// <summary>
/// 设置具体的操作,以便服务可以执行它的工作。
/// </summary>
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
log.Init(AppDomain.CurrentDomain.BaseDirectory+@"log.txt",false);
try
{
if(main==null)
main=new ResumeMain();
log.Write("正在开始...");
main.Init();
this.InitTimer();
log.Write("初始化完成!");
this.StartFrom();
}
catch(Exception ex)
{
log.Write("错误:"+ex.ToString());
}
log.Flush();
}

private void StartFrom()
{
Process[] prs=Process.GetProcesses();
bool isRun=false;
foreach(Process p in prs)
if(p.ProcessName.Equals("StartUp"))
isRun=true;
if(!isRun)
{
log.Write("正在打开程序!");
ProcessStartInfo myProcess=new ProcessStartInfo();
log.Write(AppDomain.CurrentDomain.BaseDirectory+"StartUp.exe");
myProcess.FileName=AppDomain.CurrentDomain.BaseDirectory+"StartUp.exe";
myProcess.UseShellExecute=true;
Process.Start(myProcess);
log.Write("程序打开结束!");
}
}

在进程中我看到了StartUp应用程序,但是没有显示为什么?StartUp应用程序我什么也没写.
namespace StartUp
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.Size = new System.Drawing.Size(300,300);
this.Text = "Form1";
}
#endregion

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
}
}
hertcloud 2007-05-09
  • 打赏
  • 举报
回复
直接在服务中 写 托盘界面 程序是不行的
你需要 将托盘程序部分写成另一个 winform的程序
然后 在启动服务的 时候

System.Diagnostics.Process.Start
调用 启动它.
甴曱 2007-05-09
  • 打赏
  • 举报
回复
服务与托盘程序是分开写的。
写好服务后,使用System.ServiceProcess里面的ServiceController来获取服务信息。并进行相应的管理。
祎涵 2007-05-08
  • 打赏
  • 举报
回复
有没有类似web迅雷的程序
shinaterry 2007-05-08
  • 打赏
  • 举报
回复
cby1990 2007-05-08
  • 打赏
  • 举报
回复
系统服务和托盘程序不处于同一个Desktop 和同一个WinSta因此无法在服务中创建托盘程序
Eri 2007-05-08
  • 打赏
  • 举报
回复
还有托盘的那个应用程序依赖于服务。
服务应该是一个host类的程序,托盘那个类似于一个客户端。
个人愚见。
Eri 2007-05-08
  • 打赏
  • 举报
回复
按照我的理解,他们是2个东西。
服务是服务,托盘程序是另外一个程序。
只不过他们之间可以相互通讯,互相影响。
这是我观察Serv-U得出的结论。
yxred 2007-05-08
  • 打赏
  • 举报
回复
MARK
顶!
lxwin01 2007-05-08
  • 打赏
  • 举报
回复
有人能回答吗?

110,577

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧