Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一台机器中,两个不同的WPF应用程序如何相互通信_Wpf_Com Interop - Fatal编程技术网

在同一台机器中,两个不同的WPF应用程序如何相互通信

在同一台机器中,两个不同的WPF应用程序如何相互通信,wpf,com-interop,Wpf,Com Interop,希望了解一个wpf应用程序如何激活另一个正在运行的应用程序并发送文本消息。感谢大家的回复 事实上,我成功地为自己指出了答案。PFB的步骤 为了在没有任何服务连接的情况下在两个WPF应用程序之间进行通信,我使用了Windows中可用的剪贴板功能 第一个WPF应用程序将插入需要在剪贴板中传递的值,如下所示,稍后将激活托盘中运行的另一个WPF应用程序 Process[]pname=Process.GetProcessesByName(“APPNAME”); 剪贴板.SetText(“要传递的文本”)

希望了解一个wpf应用程序如何激活另一个正在运行的应用程序并发送文本消息。

感谢大家的回复

事实上,我成功地为自己指出了答案。PFB的步骤

  • 为了在没有任何服务连接的情况下在两个WPF应用程序之间进行通信,我使用了Windows中可用的剪贴板功能
  • 第一个WPF应用程序将插入需要在剪贴板中传递的值,如下所示,稍后将激活托盘中运行的另一个WPF应用程序

    Process[]pname=Process.GetProcessesByName(“APPNAME”); 剪贴板.SetText(“要传递的文本”)

    //活化

    Process[]processs=Process.GetProcessesByName(proc); 如果(pname.Length!=0) { IntPtr hWnd=进程[0]。MainWindowHandle; setforegroundindow(hWnd); 设置窗口位置(p.MainWindowHandle,HWND_TOP,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); }

  • 稍后在激活的应用程序中..通过激活的方法,我们可以读取如下值

    字符串clipboardText=System.Windows.Clipboard.GetText()

  • 然后清除夹子

    System.Windows.Clipboard.Clear();
    
    希望这能帮助一些人。非常感谢。

    您可以使用WCF促进ICP(进程间通信)。这允许您使用命名管道或共享内存绑定,这在本地计算机上非常快速。此外,您可以通过配置更改传输层,这意味着您可以将通信中涉及的一个进程移动到另一台机器/物理或虚拟位置,而无需更改代码。参见此处:可能的副本