这是我的情景:
我需要允许用户单击Ax按钮并运行本地应用程序(比如Outlook)..不是远程的,而是来自用户的PC。
Axapta允许我使用.Net代码(例如ProcessInfo)来运行外部进程/应用程序。
但我认为问题是通过RDP运行本地应用程序。 可能吗 ? 感谢
答案 0 :(得分:2)
我也没有简单的方式,也没有任何托管的方式。
您感兴趣的API将是Remote Desktop Service Virtual Channels:
虚拟通道应用程序有两个部分,客户端模块和服务器模块。服务器模块是在远程桌面会话主机(RD会话主机)服务器上运行的可执行程序。客户端模块是一个DLL,必须在远程桌面连接(RDC)客户端程序运行时加载到客户端计算机的内存中。
然后,您将使用标准的进程间信令与服务器模块进行通信,将“launch”命令转发给客户端模块,然后最终运行“本地”应用程序。
说实话,我认为不值得。
答案 1 :(得分:2)
我普遍同意Damien,但我想再提出一个可能的" hackish"通过远程桌面(RD)连接到远程主机的本地客户端之间进行带外通信的方式,即剪贴板。 RD的一个特性是它可以在远程和本地主机之间同步剪贴板,从而允许用户跨计算机边界进行复制粘贴。
您可以在服务器上以编程方式设置剪贴板内容,并且可以在客户端上设置剪贴板侦听器(在剪贴板更改时通知),这样您就可以通过RD执行简单的通信。我成功地使用了这种技术,telnet客户端会把东西放到剪贴板中,我的C#应用程序会监听它并在将某个魔术字符串放入剪贴板时启动应用程序。
设置剪贴板可以在.NET中本地完成,并且成为剪贴板监听器也可以通过.NET,P / Invoke-ing SetClipboardViewer和其他一些Win32 API来完成。