在 Windows 7 上使用 .NET 窗口服务显示消息时出现问题。它在 Windows XP 上正常工作。我知道它在 Windows 7 上不起作用,如 Microsoft 网站和包括 Stackoverflow 在内的一些论坛中所述。我已经关注如 Stackoverflow 中所述,来自 Pinvoke.NET 的以下示例(使用 WTSSendMessage)。但它也不起作用。该示例在 Windows XP 上正常工作。有人可以帮助我,因为这是一个需要修复的非常大的问题尽快,因为我们已经迁移到 Windows7。
签名:
[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);
变量声明:
public static IntPtr WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
public static int WTS_CURRENT_SESSION = -1;
代码:
bool result = false;
String title = "Hello";
int tlen = title.Length;
String msg = "Terminal Service!";
int mlen = msg.Length;
int resp = 0;
result = WTSSendMessage(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, title, tlen,
msg, mlen, 0, 0, out resp, false);
int err = Marshal.GetLastWin32Error();
System.Console.WriteLine("result:{0}, errorCode:{1}, response:{2}", result, err, resp);