我做了一个windows的服务,每次启动会运行一个Windows form的托盘程序,系统开始后看不到托盘,而托盘程序单独运行是可以显示的。我上网查了下,有人说只要把服务设为能与桌面交互就行了,可是我的服务已经改为安装时就设置能与桌面交互了,但是托盘还是不出来啊...请高手帮忙
解决方案 »
- 能否实现串口波特率数值用TrackBar控件来显示?
- .net1.1 控件 如何获得焦点
- winform里添加引用的问题
- xmlHttp.open()错误microsoft jscript 运行时错误:没有权限;
- 请问我定义了一个多个输出参数的存储过程,这样让他们输出为什么不正确?
- 如何在网页中使用C#程序调用客户端系统的'ODBC数据源管理器'。
- 最佳匹配算法,求大牛
- 获取的数据如何快速插入数据库?
- 求助!!!!!!!!!!!!!!!
- 如何在C#中点击一个按钮,打开指定的网页
- 我要在window service服务启动后显示一个窗体界面,怎么做?
- 获取Windows XP的屏幕分辨率范围,急!
下面是我服务调用托盘程序代码
bool ico = false;
Process[] processOnComputer = Process.GetProcesses();
foreach (Process p in processOnComputer)
{
if (p.ProcessName == "ServiceControl")
{
ico = true;
}
}if (!ico)
{
string control = serviceControl;
Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo(control);
p.StartInfo = startInfo;
p.Start();
}
serviceControl是我的托盘程序.exe文件路径
服务安装后,与桌面交互选项已自动选定
//------------------------------------------------------------------------------------
[DllImport("user32.dll")]
private static extern bool IsIconic(IntPtr hWnd); //引入方法
private System.Windows.Forms.NotifyIcon HideIcon;//在该对象的可视化设计窗中设置Icon图标、Text提示信息;
//------------------------------------------------------------------------------------
//双击托盘图标事件
private void HideIcon_DoubleClick(object sender, System.EventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
}
//------------------------------------------------------------------------------------
//调整窗口大小事件(最小化)
private void frmBTOnlEvlServer_Resize(object sender, System.EventArgs e)
{
if(IsIconic(this.Handle))
{
this.Visible = false;
}
}
//------------------------------------------------------------------------------------