当前位置: 首页 > 编程语言 > C#

将一个窗口附加到另一个进程的窗口分享

时间:2023-04-11 02:03:54 C#

将一个窗口附加到另一个进程的窗口我的WPF应用程序有多个窗口,我想将其中一些窗口附加到另一个进程的窗口。我的问题是,一旦连接窗口,它就会变得不可见。我正在尝试使用以下代码:返回(previousParent==null?false:true);}[DllImport("user32.dll",SetLastError=true)]privatestaticexternIntPtrSetParent(IntPtrhWndChild,IntPtrhWndNewParent);setParentWindow(myWindowHwnd,newParentHwnd);所以上面的代码成功地附加了窗口,但不幸的是它让它不可见。我这样做的原因是我试图通过为它构建“小部件”来扩展应用程序,我的小部件将挂钩并向用户显示额外信息。两个窗口都有以下样式:WS_OVERLAPPEDWINDOW、WS_OVERLAPPED、WS_VISIBLE、WS_CLIPSIBLINGS、WS_CLIPCHILDREN。我发现即使调用setParent也可以做到这一点。我按如下方式使用HwndSource类:MyWindowwindow=newMyWindow();window.ShowActivated=true;HwndSourceParameters参数=newHwndSourceParameters();参数.WindowStyle=0x10000000|0x40000000;parameters.SetPosition(0,int)window.Width,(int)window.Height);parameters.ParentWindow=newParent;parameters.UsesPerPixelOpacity=true;HwndSourcesrc=newHwndSource(参数);src.CompositionTarget.BackgroundColor=Colors.Transparent;src.RootVisual=(Visual)window.Content;现在这工作正常,没有任何问题。我不确定您需要如何处理重叠窗口,但来自MSDN:出于兼容性原因,SetParent不会修改父级正在更改的窗口的WS_CHILD或WS_POPUP窗口样式。所以如果hWndNewParent为NULL,调用SetParent后还应该清除WS_CHILD位并设置WS_POPUP样式。相反,如果hWndNewParent不为NULL并且窗口以前是桌面的子窗口,则应在调用SetParent之前清除WS_POPUP样式并设置WS_CHILD样式。以上就是C#学习教程的全部内容:将窗口附加到另一个进程的窗口。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——}try{varhelper=newWindowInteropHelper(window){Owner=ownerHandle};}catch(Exceptione){记录器。错误(e,“无法附加窗口。”);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢