WTSSendMessage在远程桌面上不显示消息框

时间:2019-06-10 14:44:53

标签: c# c++ windows-services topshelf

我有一个Windows服务应用程序,该应用程序显示确认弹出窗口以供进一步操作。当我在本地计算机上安装服务应用程序时,它工作正常,但是当我在远程计算机上安装服务应用程序时,不会显示确认弹出窗口。

[DllImport("Kernel32.dll", SetLastError = true)]
static extern int WTSGetActiveConsoleSessionId();
public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;

public static int ConfirmPopup(string message, string title)
{
    try
    {
        WTSSendMessage(WTS_CURRENT_SERVER_HANDLE,
            WTSGetActiveConsoleSessionId(), title, title.Length, message,
            message.Length, 3, 0, out int response, true);

        return response;
    }
    catch (Exception ex)
    {
        Trace.WriteLine($"Exception:ConfirmPopup()::{ex.Message}");
        return 0;
    }
}

[DllImport("wtsapi32.dll", SetLastError = true)]
static extern bool WTSSendMessage(
    IntPtr hServer,
    [MarshalAs(UnmanagedType.I4)] int SessionId,
    String pTitle,
    [MarshalAs(UnmanagedType.U4)] int TitleLength,
    String pMessage,
    [MarshalAs(UnmanagedType.U4)] int MessageLength,
    [MarshalAs(UnmanagedType.U4)] int Style,
    [MarshalAs(UnmanagedType.U4)] int Timeout,
    [MarshalAs(UnmanagedType.U4)] out int pResponse,
    bool bWait);

我们必须向远程计算机上的客户端显示一个演示,并且该演示在那里不起作用。在本地计算机上工作正常。

0 个答案:

没有答案