我用C#做了一个服务用作启动一些外部程序,但只启动了外部程序的进程没有相应的窗体,
即使像下面的控制我也写了,还是不行
pro.StartInfo.WindowStyle = ProcessWindowStyle.Normal ;
求解啊!
即使像下面的控制我也写了,还是不行
pro.StartInfo.WindowStyle = ProcessWindowStyle.Normal ;
求解啊!
解决方案 »
- C#能调用windows底层的文件驱动不?
- asp.net C#精确在线人数统计,如何获取用户退出的操作,使用session过期
- Windows Mobile水晶报表应该怎么做?
- C#服务无法运行
- 怎样设定datagridview的DataSource内容后马上填充
- 如何将VB中的scaleX(x,vbTwips,vbPixel)转换成C#中的语句呢?
- [简单问题]字符串的正则表达式
- 我想使用别人用VB写好的控件,但不知在.NET中如何引用此控件,请大家指点
- 请微软专家和高手看过来, 怎样得到WinForm DataGrid某一行的高度?
- 请问Socket编程的问题
- winform treeview checked 获取值
- 求电影数据库的开发接口
BOOL CTestDlg::RunFile()
{
LPCTSTR path="d:\\a.exe";
WinExec(path,SW_SHOWNORMAL);
STARTUPINFO si;
memset(&si,0,sizeof(STARTUPINFO));
si.cb=sizeof(STARTUPINFO);
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
PROCESS_INFORMATION pi;
if(!CreateProcess(NULL,"C:\\Program Files\\Internet Explorer\\iexplore.exe",NULL,NULL,false,0,NULL,NULL,&si,&pi))
{
//cout<<"Create Fail!"<<endl;
exit(1);
}
return TRUE;
}
一样的,主要是同样的代码在winfrm中能让外部的程序窗体出现,但在windows service中就不行了,只有进程没有窗体
System.Diagnostics.Process.Start(t)
属性选中 允许服务与桌面交互。
1、服务启动的时候,桌面还没有启动。也就是shell没有得到活动可用的Token,也就是8楼说的与桌面交互。
2、可以强行获取,在没有登录桌面的时候就能通过帐号密码得到token,但好像在2003服务器上无法在桌面上看到程序,xp上可以。所以这个方法不是万能的。
3、后来我就不用服务来启动窗体了。服务就是服务,提供数据的处理,可以在不登陆服务器的情况下使用。