启动第三方程序并嵌入到指定容器中

news/2024/11/29 15:20:16/文章来源:https://www.cnblogs.com/sundh1981/p/18576837

通过调用API 方法实现嵌入第三方程序窗口到指定容器

Code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;namespace winformEmbedingExample
{public partial class Form1 : Form{[DllImport("user32.dll", SetLastError = true)]private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);[DllImport("user32.dll", SetLastError = true)]private static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);[DllImport("user32.dll", EntryPoint = "GetWindowLong")]private static extern int GetWindowLong(IntPtr hWnd, int nIndex);[DllImport("user32.dll", EntryPoint = "SetWindowLong")]private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);private const int GWL_STYLE = -16;private const int WS_CAPTION = 0xC00000;private Process process;private const int WS_CHILD = 0x40000000;private const int WS_VISIBLE = 0x10000000;public Form1(){InitializeComponent();Load += Form1_Load;Closing += Form1_Closing;}private void Form1_Closing(object sender, CancelEventArgs e){Process[] ps = Process.GetProcessesByName("Project2");foreach (var p in ps) {p.Kill();}}private void Form1_Load(object sender, EventArgs e){}private void StartThirdPartApplication(){process = Process.Start("Project2.exe");process.WaitForInputIdle();IntPtr pWnd = process.MainWindowHandle;int style = GetWindowLong(pWnd, GWL_STYLE);style &= ~WS_CAPTION;style |= WS_CHILD;SetWindowLong(pWnd, GWL_STYLE, style);SetParent(pWnd, panel1.Handle);MoveWindow(pWnd, 0, 0, panel1.Width, panel1.Height, false);}private void button2_Click(object sender, EventArgs e){StartThirdPartApplication();}}
}

效果

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843456.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7定时备份mysql发送邮件

前几天搞服务器备份发邮件的功能,搞了好长时间都没调通,想必有很多人和我遇到过一样的问题,今天分享出来帮大家解决燃眉之急。我不允许还有不会的童鞋出现。安装mailx(邮件服务) yum install mailx -y编辑配置文件 vim /etc/mail.rcset from=xxx@qq.com #发信人地址 set s…

RSA2048生成及使用

RSA2048 小编最近裸辞了,以前工作中涉及到的RSA加密使用方法一直没有总结。 所以把RSA2048的密钥生成和使用方法写一写免得以后忘记(而且网上好多碎片化信息没有总结成一套)。 我选择的开源代码是包含了除N,P,Q,E,D之外还需要E1,E2,C的处理方式。其实大差不差,因为按照我的…

WPF从如何动态从本地文件加载界面

在前面的文章中,我介绍过一种报告模板的实现思路。就是用的XAML本地加载。 https://www.cnblogs.com/zhaotianff/p/18254574在另外一篇文章中,介绍了XAML是如何被转换成对象的。 https://www.cnblogs.com/zhaotianff/p/18363828在这篇文章中,简单介绍了InitializeComponent函…

Python 爬虫必备杀器,xpath 解析 HTML

最近工作上写了个爬虫,要爬取国家标准网上的一些信息,这自然离不了 Python,而在解析 HTML 方面,xpath 则可当仁不让的成为兵器谱第一。 你可能之前听说或用过其它的解析方式,像 Beautiful Soup,用的人好像也不少,但 xpath 与之相比,语法更简单,解析速度更快,就像正则…

视频调色 LUT 教程 All In One

视频调色 LUT 教程 All In One Lookup tables (LUTs) 在图像处理中,查找表通常称为 LUT(或 3DLUT),并为一系列索引值中的每一个提供输出值。一种常见的 LUT,称为颜色图或调色板,用于确定特定图像将显示的颜色和强度值。在计算机断层扫描中,“窗口化”是指用于确定如何显…

探索中国风水学与AI人工智能的融合之旅

在古老的东方智慧中,风水学一直是中国传统文化的重要组成部分。它不仅是一种哲学思想,更是一种生活方式,指导人们如何与自然和谐共存,寻求生活的平衡与和谐。随着科技的发展,人工智能(AI)技术的兴起为风水学带来了新的解读和应用方式。本文将带您走进中国风水学与AI结合…

『玩转Streamlit』--可编辑表格

之前介绍过两个数据展示的组件,st.dataframe和st.table。 今天介绍的st.data_editor组件,除了展示数据的功能更加强大之外,还可以编辑数据。 1. 概要 st.data_editor组件在数据展示和编辑中都发挥着独特且重要的作用。 首先,在数据展示方面,它的优势在于:直观性:以表格形…

【验证码逆向专栏】某多多验证码逆向分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术…

使用静态html绘制流程图

方案一使用svg<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Flowchart Example</title&g…

Vulnhub-Earth靶机笔记

Earth 靶机笔记 概述 这是一台 Vulnhub 的靶机,主要是 Earth 靶机地址:https://vulnhub.com/entry/the-planets-earth,755/#download 一、nmap 扫描 1、端口扫描 -sT 以 TCP 全连接扫描,--min-rate 10000 以最低 10000 速率进行扫描,-p-进行全端口扫描,-o ports 结果输出到…

hhdb数据库介绍(10-2)

集群管理 计算节点集群 集群管理主要为用户提供对计算节点集群的部署、添加、启停监控、删除等管理操作。 集群管理记录 集群管理页面显示已部署或已添加的计算节点集群信息。可以通过左上角搜索框模糊搜索计算节点集群名称进行快速查找。同时也可以通过右侧展开展开/隐藏更多按…

如何查看CUDA版本

在安装pytorch或TensorFlow等包时,需要和cuda版本匹配,此时需要查看cuda版本: 在终端输入命令nvidia-sim