社区
C#
帖子详情
Windows服务与托盘
lxwin01
2007-05-08 08:06:27
已经写好了服务,但是我想随着服务启动也启动托盘程序,做窗体进行设置已经写好服务目录下的配置文件和服务控制。
顺便问下,为什么在服务启动事件里写窗体没用?
...全文
717
16
打赏
收藏
Windows服务与托盘
已经写好了服务,但是我想随着服务启动也启动托盘程序,做窗体进行设置已经写好服务目录下的配置文件和服务控制。 顺便问下,为什么在服务启动事件里写窗体没用?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
有人能回答吗?
C#实现用
托盘
控制
windows
服务
这个例子既实现了系统
托盘
功能,也实现了多
windows
服务
的控制,非常实用!
windows
服务
+
托盘
控制程序
开发
windows
服务
时,使用共享内存机制和系统
托盘
应用程序进行界面交互,用于控制
服务
和显示
服务
的状态
Visio2016 企业级网络拓扑的吸睛大法(画法)
01. Visio 2016 下载 安装 激活使用02. 绘制立体感矩形
托盘
03. 制作标准 标识牌04. 指定形状的图层05. 指定连接点和组合
服务
器集群06. 连接线(按住Ctrl 拖拽)07. 制作标识牌四件08. 制作标识牌二件和拓扑大
托盘
Windows
QT
托盘
程序例子
Windows
QT
托盘
程序例子程序,很经典。
delphi
托盘
案例,并注册成
WINDOWS
服务
delphi 有
托盘
EXE
服务
两栖,并能注册成
服务
,想作
服务
的朋友不防可以下载看看,很有用
C#
110,577
社区成员
642,566
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章