当前位置: 首页 > news >正文

QT写的exe嵌入到wpf中

1.cs代码

public partial class MainWindow : Window
    {
        //声明调用user32.dll中的函数
        [DllImport("user32.dll")]
        static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
        [DllImport("user32.dll")]
        static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
        //定义变量
        private IntPtr prsmwh;//外部EXE文件运行句柄
        private Process app;//外部exe文件对象
        public MainWindow()
        {
            this.InitializeComponent();            
        }


        private void flash_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            //获取当前窗口句柄
            IntPtr handle = new WindowInteropHelper(this).Handle;
            string path=System.Environment.CurrentDirectory + @"\positioning\CTHME.exe";
            app = Process.Start(path);
            prsmwh = app.MainWindowHandle;
            while ( prsmwh ==IntPtr.Zero)
            {
                 prsmwh = app.MainWindowHandle;
            }
            //设置父窗口
            SetParent(prsmwh,handle);
            ShowWindowAsync(prsmwh,3);//子窗口最大化
        }

        private void Window_Closed(object sender, System.EventArgs e)
        {
            if (app.CloseMainWindow()){
                app.Kill();
                app.Close();                
            }
        }        
    }
}

2.xaml代码

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfEXE.MainWindow"
    x:Name="Window"
    Title="test"
    Width="640" Height="480" WindowStartupLocation="CenterScreen" Closed="Window_Closed" WindowState="Maximized">

    <Grid x:Name="LayoutRoot">
        <Grid.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="Blue" Offset="0.313"/>
                <GradientStop Color="White" Offset="1"/>
            </LinearGradientBrush>
        </Grid.Background>

        <Button x:Name="flash" Content="测试" Height="25" VerticalAlignment="Top" Cursor="Hand" FontSize="14.667" Margin="0,78,0,0" Click="flash_Click" HorizontalAlignment="Left" Width="104"/>

    </Grid>
</Window>

相关文章:

  • 4月22日直播预告|AI赋能开发提效,三大应用场景实战分享
  • 安恒安全渗透面试题
  • electron从安装到启动再到打包全教程
  • Eteam 0.3版本开发规划
  • 【Easylive】使用Seata解决分布式事务问题
  • 华为云获取IAM用户Token的方式及适用分析
  • 阿里云入门手册
  • 富文本编辑器
  • SSH反向代理
  • go语言的八股文
  • 突破传统!SEARCH-R1如何让LLM与搜索引擎协同推理?
  • 音视频学习(三十五):aud
  • DeepSeek 大模型 + LlamaIndex + MySQL 数据库 + 知识文档 实现简单 RAG 系统
  • from tensorflow.keras.models import Model中Model报红;以及动态链接库(DLL)初始化例程失败
  • TensorFlow和PyTorch学习原理解析
  • 创新项目实训开发日志3
  • 维度建模工具箱 提纲与总结
  • Spring如何通过XML注册Bean
  • Ldap高效数据同步- Delta-Syncrepl复制模式配置实战手册(上)
  • 第 4 篇:平稳性 - 时间序列分析的基石
  • 经济日报刊文谈外卖平台仍试图凭补贴制造超低价:苦练内功摆脱“内卷式”竞争
  • 福建浯屿岛垃圾排海追踪:堆存已清理,当地称今后会日产日清日运
  • 钱理群|直面衰老与死亡
  • 美关税政策冲击本土车企:福特7月涨价,通用汽车盈利预期下调
  • 新华社经济随笔:把握不确定性中的确定性
  • 外交部谈第十六个“联合国中文日”:期待更多人以中文为桥读中国,读懂世界