C#学习教程:切换到同一个应用程序的另一个实例例如,如果我现在有一个应用程序只有一个按钮和三个正在运行的实例。现在,如果我在第一个实例中按下按钮,聚焦到第二个实例,在第二个实例中按下按钮,聚焦到第三个实例,在第三个实例中按下按钮,聚焦到第一个实例,我该怎么做?如果你知道另一个实例的句柄,你应该只调用WindowsAPI:[DllImport("user32.dll",SetLastError=true)]staticexternIntPtrFindWindow(stringlpClassName,stringlpWindowName);您可以使用FindWindowAPI调用来获取其他实例的句柄,例如:publicstaticintFindWindow(stringwindowName){inthWnd=FindWindow(null,windowName);返回hWnd;您可以在SO中搜索这些api调用以获取更多示例,例如找到这个:Howtofocusanouterwindow?SetForegroundWindow是一个很好的解决方案。另一种方法是使用命名信号量向其他应用程序发送信号。最后,您可以寻找进程间通信(IPC)解决方案,它允许您在进程之间发送消息。我编写了一个简单的.NetXDMessaging库,使这一切变得简单。使用它,您可以将指令从一个应用程序发送到另一个应用程序,在最新版本中甚至可以传递上传的对象。它是使用通道概念的多播实现。应用一:IXDBroadcastbroadcast=XDBroadcast.CreateBroadcast(XDTransportMode.WindowsMessaging);broadcast.SendToChannel("命令","焦点");应用二:以上就是C#学习教程的全部内容:切换同一个应用的其他实例,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——IXDListenerlistener=XDListener.CreateListener(XDTransportMode.WindowsMessaging);listener.MessageReceived+=XDMessageHandler(listener_MessageReceived);listener.RegisterChannel("命令");//处理消息privatevoidlistener_MessageReceived(objectsender,XDMessageEventArgse){//e.DataGram.Message是消息//e.DataGram.Channel是通道名switch(e.DataGram.Message){case"focus"://检查需要调用this.focus();休息;案例“关闭”this.close();休息;}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
