如何将Window从另一个应用程序嵌入到WPF窗口中作为用户控件?
发布时间:2020-12-13 20:52:38 所属栏目:Windows 来源:网络整理
导读:WPF窗口中显示另一个第三方应用程序的窗口是否可能?优选在容器控制中? 我猜想可能有一些Win32 API允许我们这样做。 之前我曾经为Winforms做过,但是方法不是很明亮,只要别人没有任何想法,这就是我所做的。这个代码是这样的: Process p = Process.Start(
WPF窗口中显示另一个第三方应用程序的窗口是否可能?优选在容器控制中?
我猜想可能有一些Win32 API允许我们这样做。
之前我曾经为Winforms做过,但是方法不是很明亮,只要别人没有任何想法,这就是我所做的。这个代码是这样的:
Process p = Process.Start(@"application.exe"); p.WaitForInputIdle(); IntPtr appWin = p.MainWindowHandle; SetParent(appWin,parent); SetWindowLong(appWin,GWL_STYLE,WS_VISIBLE); System.Threading.Thread.Sleep(100); MoveWindow(appWin,ClientRectangle.Width,ClientRectangle.Height,true); (其中SetParent,SetWindowLong和MoveWindow是通过p / invoke调用的win32 API函数)睡眠需要作为一个黑客,因为没有它,对MoveWindow的调用将不起作用。 对于WPF,您将需要一个窗口/控件的句柄,这将是您的第三方窗口的对应,而最简单的方法是使用HwndHost容器。 我不认为在WPF中有一个更漂亮的方式来实现这一点。另外,请注意,我只是在winforms中进行测试,而不是在WPF中测试,但是它应该也在WPF中工作,只要它有一个有效的win32 HWND的父级。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .net – 缺少WebClient标头属性添加方法?
- iis-7 – IIS 7.5,加密密钥和HRESULT:0x80090005
- windows下编译支持https的libcurl
- 我可以通过任务管理器处理我的Windows进程被杀?
- .NET的SuppressKeypress是如何工作的?
- windows 环境安装K8s
- active-directory – Windows 10上的Active Directory管理中
- Windows上的QtCreator使用CodeSourcery工具链交叉编译Linux
- 如何在任务栏上创建一个Windows 7加载栏
- windows – 为所有现有用户和所有新用户添加HKCU密钥和值的
推荐文章
站长推荐
- windows-event-log – 有没有办法在局域网上搜索
- windows-phone-8 – 获取应用程序版本Windows Ph
- qt4 – Qt – Windows 7基本主题下禁用的QPushBu
- windows-server-2008 – 重新插入RAID磁盘.定义为
- .net – 我可以告诉Windows不要换出特定进程的内
- windows-server-2016 – 存储空间直接检测和更改
- windows-server-2008-r2 – 如何在Server 2008 R
- Windows – Server 2012,Jumbo Frames – 我应该
- 如何在Windows上确定是否安装了C/C++编译器
- windows-server-2008-r2 – 使用RDP时鼠标光标会
热点阅读