WPF编程,获取句柄将外部程序嵌入到WPF界面。

原文:WPF编程,获取句柄将外部程序嵌入到WPF界面。

版权声明:我不生产代码,我只是代码的搬运工。 https://blog.csdn.net/qq_43307934/article/details/86648114

1、增加引用

2、增加命名空间

? ? ? ? xmlns:wfh="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"

? ? ? ? xmlns:wfc="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

3、前台

        <Grid Grid.Row=" 1" Name="ddddd">
            <WindowsFormsHost x:Name="form1"
                              HorizontalAlignment="Stretch"
                              VerticalAlignment="Stretch"
                              >
                <wfc:FlowLayoutPanel x:Name="flowLayoutPanel1">
                </wfc:FlowLayoutPanel>
            </WindowsFormsHost>
        </Grid>

?4、后台

先增加如下:

        [DllImport("User32.dll ", SetLastError = true, EntryPoint = "SetParent")]

        private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

        [DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true, CharSet = CharSet.Auto)]
        private static extern int SendMessage(IntPtr hwnd, uint wMsg, int wParam, int lParam); //对外部软件窗口发送一些消息(如 窗口最大化、最小化等)

        [DllImport("user32.dll ", EntryPoint = "ShowWindow")]

        public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);

在事件中增加代码?,比如在按钮事件中:

        private void Button_Click_1(object sender, EventArgs e)
        {

            Process p = new Process();
            p.StartInfo.FileName = "cmd.exe ";
            p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;//加上这句效果更好
            p.Start();

            System.Threading.Thread.Sleep(200);//加上,100如果效果没有就继续加大

           // IntPtr hwnd = new WindowInteropHelper(this).Handle;
           // IntPtr hwnd2 = ((HwndSource)PresentationSource.FromVisual(ddddd)).Handle;

           // IntPtr hPlayWnd = flowLayoutPanel1.Handle;

            System.Windows.Forms.PictureBox pp = new System.Windows.Forms.PictureBox
            {
                Width = 500,
                Height = 400,
                Bounds = new System.Drawing.Rectangle(0, 0, 500, 400),
                Name = "PictureBox"
            };
            form1.Child = pp;
            IntPtr hpanel1 = pp.Handle;

            SetParent(p.MainWindowHandle, hpanel1); //panel1.Handle为要显示外部程序的容器

            ShowWindow(p.MainWindowHandle, 3);

        }

?

?

原文地址:https://www.cnblogs.com/lonelyxmas/p/10729342.html

时间: 2024-08-29 23:28:01

WPF编程,获取句柄将外部程序嵌入到WPF界面。的相关文章

获取句柄的类型以及对应的ID序号

遍历所有进程下的所有句柄,以及对应句柄类型. 一丶简介 在有的时候.我们会需要对应句柄名字.以及句柄类型的名称. 以及它所对应的的ID. 因为每个系统不一样.所以每次都是不一样的. 有的时候我们就需要借助Pchunter等类似的 Ark工具查看句柄名字. 以及对应的类型. 二丶原理讲解 想要获取 指定进程下的所有句柄,以及句柄名字. 句柄类型.我们只需要几步即可. 1.使用未导出API ZwQuerySystemInformation 获取系统所有进程信息. 2.根据PID打开进程句柄.(可以跳

Qt编程获取鼠标移动事件

想做下面一个效果:想当鼠标移动到按钮上的时候,按钮就变大,图标换个大的,鼠标不在按钮上的时候,按钮就变小,图标也换成小的,感觉比较Cool 实现原理:为每个按钮设置监听属性 void MainHomeForm::init() { //为按钮注册事件 ui->SystemSetButton->installEventFilter(this); ui->ZoneSetButton->installEventFilter(this); } //系统监听器监听按钮对象 bool MainH

Linux下编程获取本地IP地址的常见方法

转载于:http://blog.csdn.net/k346k346/article/details/48231933 在进行linux网络编程时,经常用到本机IP地址.本文罗列一下常见方法,以备不时之需. 获取本机IP地址,是一个相当灵活的操作,原因是网络地址的设置非常灵活而且都是允许用户进行个性化设置的.比如一台计算机上可以有多块物理网卡或者虚拟网卡,一个网卡上可以绑定多个IP地址,用户可以为网卡设置别名,可以重命名网卡.用户计算机所在网络拓扑结构未知,主机名设置是一个可选项,并且同样可以为一

Linux编程获取本机IP地址

使用函数getifaddrs来枚举网卡IP,其中使用到的结构体如下所示: struct ifaddrs { struct ifaddrs *ifa_next; /* Next item in list */ char *ifa_name; /* Name of interface */ unsigned int ifa_flags; /* Flags from SIOCGIFFLAGS */ struct sockaddr *ifa_addr; /* Address of interface *

在WPF中获取DataGridTemplateColumn模板定义的内容控件

xaml格式描述: <DataGrid Name="dataGrid" Grid.Row="1" ItemsSource="{Binding}"  >            <DataGrid.Columns>              <DataGridTemplateColumn Header="描述">                    <DataGridTemplateCo

【转】vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限

ShellExecuteEX编程 --- 获取管理员权限:http://blog.csdn.net/jhui163/article/details/5873027 怎样让你的应用程序获得管理员权限:就是在运行开发工具如vc6.0 或vs2010时,要以管理员身份运行,这样你的应用程序才可以继承 http://bbs.csdn.NET/topics/390262991 解决:在vs2010等开发工具中虽然以管理员身份编译运行了程序,可以获得管理员权限,但是当单独点击Debug或release版时,

编程:获取股票实时行情数据大全

编程:获取股票实时行情数据大全 股票软件都提供自定义公式的功能,但因为常规股票软件都是点播数据,自定义公式对分时行情完全无效,要想更细腻的分析,只能找股票实时行情接口 一般来说,有如下3种版本 屌丝版 去门户财经频道采集数据,百度,sina,搜狐,网易,和讯都有.首推sina,页面结构良好,同时提供js接口和动态gif绘制 json数据: >>curl http://hq.sinajs.cn/list=sh600133 >>var hq_str_sh600133="东湖高

WPF编程—样式

WPF编程学习——样式 本文目录 1.引言 2.怎样使用样式? 3.内联样式 4.已命名样式 5.元素类型样式 6.编程控制样式 7.触发器 1.引言 样式(Style),主要是用来让元素或内容呈现一定外观的属性.WPF中的样式的作用,就像Web中的CSS一样,为界面上的元素定制外观,以提供更好的用户界面.在WPF应用程序中,通过控件的属性,我们也可以实现更改控件的外观.但是,这种方式局限性大.不灵活且不利于维护.例如: 复制代码 <Grid> <Button Width="8

Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面

http://www.mobiletuts.me 获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityManager  类,用于网络连接状态的检测. Android开发文档这样描述ConnectivityManager 的作用: Class that answers queries about the state of network connectivi