win7下Windows服务弹出窗体应用程序

原因

最近公司一些业务上的需要,需要一个winform程序一直运行。但是如果这个程序被停止或者没有开机启动,就需要启动它。

于是我就想到了用服务来监控它是否在运行。但是在调试的时候,用服务启动这个程序却一直只能启动进程,而不能看到窗体。

解决办法

在同事的帮助下,知道了原因。原来是session 0 的原因。

在网搜了一个方法,用CreateProcessAsUser这个方法来创建。

原文 http://www.cnblogs.com/gnielee/archive/2010/04/08/session0-isolation-part2.html


意思大致如下

为了方便管理,新建一个类,加上以下代码

public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;

public static void ShowMessageBox(string message, string title)
{
    int resp = 0;
    WTSSendMessage(
        WTS_CURRENT_SERVER_HANDLE, 
        WTSGetActiveConsoleSessionId(),
        title, title.Length, 
        message, message.Length, 
        0, 0, out resp, false);
}

[DllImport("kernel32.dll", SetLastError = true)]
public static extern int WTSGetActiveConsoleSessionId();

[DllImport("wtsapi32.dll", SetLastError = true)]
public static extern bool WTSSendMessage(
    IntPtr hServer,
    int SessionId,
    String pTitle,
    int TitleLength,
    String pMes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值