从NT服务发送消息到远程桌面会话

时间:2013-05-11 21:34:59

标签: windows delphi windows-server-2008 windows-server-2003

我如何发送sendmessage&从nt服务到在远程桌面会话中启动的应用程序的postmessage?目前我通过应用程序之间的udp通信暂时解决了这个问题。

3 个答案:

答案 0 :(得分:5)

您无法跨会话边界发送消息。因此,您需要一个IPC解决方案,如TCP / IP,套接字,命名管道等。

答案 1 :(得分:1)

创建一个执行sendmessage / postmessage的程序:

程序sendit; 使用转换器; 开始   exitcode:= sendmessage(covert1(paramstr(1)),convert2(....等 端。

然后使用CreateProcessAsUser在正确的会话中运行它。您可以等待(WaitForSingleObject)程序退出,此时sendmessage已完成。但它很慢:)。

您也可以使用管道/ IPC,但您仍然可以使用CreateProcessAsUser启动“服务器”。使用Jwa获取令牌等。

使用比我刚才更好的名字:)。

答案 2 :(得分:0)

使用WTSSendMessage api:在指定的远程桌面服务会话的客户端桌面上显示一个消息框。

http://msdn.microsoft.com/nl-nl/library/windows/desktop/aa383842(v=vs.85).aspx

或者使用Jedi Windows安全库,它将这个包装在漂亮的delphi中,就像对象一样