C# Winform 窗体美化(九、嵌入窗体)

九、嵌入窗体

还是关于 Winform 窗体的一些操作问题,这次是研究了一个嵌入窗体,这次学习纯属偶然,项目中确实没遇到过这种需求。就是把别人的程序嵌入到自己的程序中,就像这样:

这里我嵌入了测试显示器的程序
[外链图片转存中…(img-Q8lty137-1655564215061)]

这次学习得益于一片博客(引用一定要注明出处 _):
http://www.cnblogs.com/bitzhuwei/archive/2012/05/24/SmileWei_EmbeddedApp.html

关于嵌入程序的资料,上面链接博客的作者写的非常详细了,而且也整理了相关的代码,可以下载学习。

这里我自己也整理学习了一下,有需要可以下载。源码下载

如果没有积分,也可以关注我获取哟~
hi

嵌入过程主要代码

private void EmbedProcess(Process app, Control control)
{//验证进程和控件非空if (app == null || app.MainWindowHandle == IntPtr.Zero || control == null) return;try{//核心代码:嵌入程序SetParent(app.MainWindowHandle, control.Handle);}catch (Exception) { }try{//移除嵌入的窗口的窗口标题栏SetWindowLong(new HandleRef(this, app.MainWindowHandle), GWL_STYLE, WS_VISIBLE);}catch (Exception) { }try{//将嵌入的窗口欧放置到合适位置,填满宽高MoveWindow(app.MainWindowHandle, 0, 0, control.Width, control.Height, true);}catch (Exception) { }
}

效果图

这里可以看到嵌入程序的三个步骤:

  1. 嵌入程序
  2. 移除嵌入的窗口的窗口标题栏
  3. 将嵌入的窗口欧放置到合适位置,填满宽高

截图感受一下:
1.嵌入程序
[外链图片转存中…(img-6JJFYALs-1655564215062)]

2.移除嵌入的窗口的窗口标题栏
[外链图片转存中…(img-LYotM4qm-1655564215062)]

3.将嵌入的窗口欧放置到合适位置,填满宽高
[外链图片转存中…(img-STs5SN1G-1655564215063)]

疑问

最后还是有一些疑问没有解决:

  1. 焦点的问题;
  2. 有些应用不能被嵌入;
  3. 有些应用嵌入位置可能出现异常;

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

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

相关文章

Mac 流程图

https://www.lucidchart.com/pages/signup?utm_expid39895073-174.qKyHpBEbQS26y86OArD-rQ.1 https://www.processon.com/

setname_Python线程类| setName()方法与示例

setnamePython Thread.setName()方法 (Python Thread.setName() Method) Thread.setName() method is an inbuilt method of the Thread class of the threading module in Python. It uses a Thread object and sets the name of the thread. Thread.setName()方法是Python中线…

SpringBoot 优雅的参数效验!

引言 不知道大家平时的业务开发过程中 controller 层的参数校验都是怎么写的?是否也存在下面这样的直接判断?public String add(UserVO userVO) {if(userVO.getAge() null){return "年龄不能为空";}if(userVO.getAge() > 120){return &quo…

NTFS Change Journal(USN Journal)详解

写在前面 最近又用了一下usn日志来获取所有文件列表,在分多次加载文件列表的时候发现有文件丢失的情况,后来发现一篇文章比较详细的讲了usn。 用cmd来读取usn日志 如图: 以下是转载内容: 还是那个文件监控的应用,…

Java即时类| hashCode()方法与示例

即时类hashCode()方法 (Instant Class hashCode() method) hashCode() method is available in java.time package. hashCode()方法在java.time包中可用。 hashCode() method is used to get the hash code value for this Instant. hashCode()方法用于获取此Instant的哈希码值…

系统起动时加载的过程

sof_getdjval转载于:https://blog.51cto.com/bks2015/1660178

绝,Java 中创建对象的 5 种方法!

我们日常生活中会创建很多对象,但是这个对象和你理解的那么对象不一样,因为作者不是女娲,不能造人。作者只是程序员,他只能在 Java 中创建对象。那么我问你一个问题,你知道 Java 中如何创建对象吗?这个问题…

C# Winform 窗体美化(十、自定义窗体)

十、自定义窗体 写在前面 最近在做 winform 应用程序,需要自定义一种窗口的样式,所以就随便搞了一个简单的窗口。 效果图 有两种样式,界面如下: 无标题: 有标题: 关键词 1、黑色描边边框 对于…

几种在shell命令行中过滤adb logcat输出的方法

几种在shell命令行中过滤adb logcat输出的方法 分类标签: LogCat ADB 我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率。本文就具体介绍几种在sh…

duration java_Java Duration类| toHours()方法与示例

duration javaDuration Class toHours()方法 (Duration Class toHours() method) toHours() method is available in java.time package. toHours()方法在java.time包中可用。 toHours() method is used to convert this Duration into the number of hours. toHours()方法用于…

SpringBoot时间格式化的5种方法!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)在我们日常工作中,时间格式化是一件经常遇到的事儿,所以本文我们就来盘点一下 Spring Boot 中时间格…

C#文件加密和解密

下载 CSDN下载:https://download.csdn.net/download/myinc/9913318 Github:GitHub 如果没有积分,也可以关注我获取哟~【文件加密】 // * 最近看了一下加密算法,对加密文件突然很感兴趣,就研究了一下:…

zabbix server 迁移步骤

zabbix server 迁移步骤: 1.在新机器上安装同版本的zabbix server软件和zabbix agent软件。 2.同步zabbix_server.conf配置文件。 3.同步/usr/lib/zabbix/{alertscripts,externalscripts}里面的程序。 4.我们这里有安装使用oneproxy,需要同步oneproxy软件…

stl reserve_vector :: reserve()函数以及C ++ STL中的示例

stl reserveC vector :: reserve()函数 (C vector::reserve() function) vector::reserve() is a library function of "vector" header, which is used to request change in vector allocation. Refer to example to understand in details. vector :: reserve()是…

SpringBoot 如何统一后端返回格式?老鸟们都是这样玩的!

大家好,我是磊哥。今天我们来聊一聊在基于SpringBoot前后端分离开发模式下,如何友好的返回统一的标准格式以及如何优雅的处理全局异常。首先我们来看看为什么要返回统一的标准格式?为什么要对SpringBoot返回统一的标准格式在默认情况下&#…

SysinternalsSuite工具

写在前面(下载) 下载地址 简介 sysinternals 的网站创立于1996年由Mark russinovich和布赖科格斯韦尔主办其先进的系统工具和技术资料微软于2006年7月收购sysinternals公司 . 不管你是一个IT高级工作者还是一个开发者,你都会发现sysintern…

zabbix企业应用之监控docker容器资源情况

关于docker的监控,无论开源的CAdvisor、Data Dog还是我自己写的监控(http://dl528888.blog.51cto.com/2382721/1635951),不是通过docker的stats api就是使用socket来进行。单独看一个主机的监控项还行,比如只查看容器t…

使用了synchronized,竟然还有线程安全问题!

线程安全问题一直是系统亘古不变的痛点。这不,最近在项目中发了一个错误使用线程同步的案例。表面上看已经使用了同步机制,一切岁月静好,但实际上线程同步却毫无作用。关于线程安全的问题,基本上就是在挖坑与填坑之间博弈&#xf…

序列图| 软件工程

什么是时序图? (What is Sequence Diagram?) Sequence Diagram is a "Connection Diagram" that represents a single structure or storyline executing in a system. It is the second most used UML diagram behind the class diagram. Sequence Diag…

终极解密输入网址按回车到底发生了什么?

详解输入网址点击回车,后台到底发生了什么。透析 HTTP 协议与 TCP 连接之间的千丝万缕的关系。掌握为何是三次握手四次挥手?time_wait 存在的意义是什么?全面图解重点问题,再也不用担心面试问这个问题。大致流程URL 解析&#xff…