首页 > 其他分享 >Winform 知道一个窗体的句柄,如何获取这个窗体,并添加控件

Winform 知道一个窗体的句柄,如何获取这个窗体,并添加控件

时间:2024-05-31 09:43:50浏览次数:14  
标签:控件 26medical int 句柄 CharSet System 窗体 using true

Winform 知道一个窗体的句柄,如何获取这个窗体,并添加控件

var frm = (Control)Form.FromHandle(h);
h为句柄,我这里强转成control了,你可以自己看情况改动
我原来写过一个例子,调用cmd.exe窗口,并嵌入到自己的窗体内,你可以参考一下
using System;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsApplication1
{
public partial class Form2 : Form
{
[DllImport("user32", EntryPoint = "SetParent", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)] public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
[DllImport("user32", EntryPoint = "FindWindowA", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "SendMessageA", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)] private static extern int SendMessage(int hwnd, int wMsg, int wParam, int lParam);
[DllImport("shell32.dll", EntryPoint = "ShellExecuteA", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)] private static extern int ShellExecute(int hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
private const int WM_SYSCOMMAND = 0x112; private const int SC_MAXIMIZE = 0xF030; private const int SC_MINIMIZE = 0xF020; private const int SC_RESTORE = 0xF120; public const int SW_HIDE = 0; public const int SW_SHOW = 5;
[DllImport("user32.dll ", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)] private static extern int ShowWindow(int hwnd, int nCmdShow);
public Form2() { InitializeComponent(); }
private void Form2_Load(object sender, EventArgs e) { //Process p = null; // p = System.Diagnostics.Process.Start("c:\\windows\\system32\\cmd.exe"); ShellExecute(this.panel1.Handle.ToInt32(), "open", @"c:\\windows\\system32\\cmd.exe", null, ".", SW_HIDE); // 让CtrlDemo.exe运行在PANEL里 IntPtr h = FindWindow(null, "c:\\windows\\system32\\cmd.exe"); //关键在这里 var frm = (Control)Form.FromHandle(h); //使你的Form可以嵌入别的容器 //frm.Visible = true; SetParent(h, this.panel1.Handle); //嵌套到panel1内 SendMessage(h.ToInt32(), WM_SYSCOMMAND, SC_MAXIMIZE, 0); ShowWindow(h.ToInt32(), SW_SHOW); } } }

原文连接:https://page.sm.cn/blm/midpage-317/index?id=12_aed11275f4756a00b0d5e044ca3c1f05&h=www.jingyanlib.com&uc_param_str=dnntnwvepffrbijbprsvchgputdemennosstodcaaagidsdieini&q=winform%E6%A0%B9%E6%8D%AE%E7%AA%97%E4%BD%93%E5%8F%A5%E6%9F%84+%E8%8E%B7%E5%8F%96%E7%AA%97%E4%BD%93&title=%E7%9F%A5%E9%81%93%E4%B8%80%E4%B8%AA%E7%AA%97%E4%BD%93%E7%9A%84%E5%8F%A5%E6%9F%84%EF%BC%8C%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E8%BF%99%E4%B8%AA%E7%AA%97%E4%BD%93_%E8%8A%9D%E5%A3%AB%E5%9B%9E%E7%AD%94&from=kkframenew_resultsearch&bucket=ab_pc_search%3Doff%26medical_article_insert_v2%3Db0%26medical_bs2%3Don%26medical_business_consult_trigger%3Db1%26medical_cls_tag_faq_recall_only%3Don%26medical_cls_tag_skip_cache_for_entity%3Don%26medical_dedup%3Dexp3%26medical_dedup2%3Dexp3%26medical_dedup3%3Dexp3%26medical_dedup4%3Dexp4%26medical_hos_zyy%3Don%26medical_l4_model%3Dmodel2%26medical_qa_dsi%3Doff%26medical_query_recommend%3Dbucket_4%26medical_ranker%3Dv1%26medical_rerank%3Dv3%26medical_rerank2%3Dbase%26medical_zizen%3Don%26

 

标签:控件,26medical,int,句柄,CharSet,System,窗体,using,true
From: https://www.cnblogs.com/1175429393wljblog/p/18223844

相关文章

  • ant design vue a-date-picker 控件问题
    遇见a-date-picker控件回显,不操作再保存报错问题,后台是date类型会报下面这个错误Fielderrorinobject'notice'onfield'endTime':rejectedvalue[2024-05-31T07:32:24.000+00:00];codes[typeMismatch.notice.endTime,typeMismatch.endTime,typeMismatch.java.util.Date,......
  • WPF MVVM如何在ViewModel直接操作控件对象
    早些年在WPF中使用COM组件时,需要在ViewModel中操作COM组件中的控件对象,但是这个控件对象又不支持绑定,后面的解决办法是在窗口加载时,将控件对象以参数传递到Loaded事件的处理命令中,然后将这个对象记录下来,后面就可以直接操作这个控件了。今天同事在使用WebView2的时候,又遇到这个......
  • (一)C#窗体应用程序打包发布安装到桌面全过程
    一、首先安装好VS2022(可以参考如下安装教程),其次在里面扩展添加VisualStudioInstallerProjects1.VS2022安装教程参考:VisualStudio2022下载安装与使用超详细教程-编程宝库(codebaoku.com)2.在VisualStudio里面安装插件二、......
  • 【QT】QHash键值对记录QTcpSocket客户端句柄
    第一步:.h文件代码#ifndefSOCKETMAP_H#defineSOCKETMAP_H#include<QHash>#include<QDebug>#include<QTcpSocket>#include<QException>classSocketMap:publicQObject{Q_OBJECTpublic:SocketMap();public:staticboolupd......
  • 如何使用前端表格控件实现多数据源整合?
    前言作为表格产品的典型应用场景之一,几乎所有的行业都会存在类Excel报表开发这样的应用场景,而在这些应用场景中,经常会遇见下面的这些痛点:报表数据往往来自多个不同的数据源,需要报表系统能够同时连接多个数据源,并融合不同的数据格式实际的报表中需要对数据结果进行逻辑计算,例......
  • pyqt Qtreeview分层控件
    pyqtQtreeview分层控件介绍效果代码介绍QTreeView是PyQt中的一个控件,它用于展示分层数据,如目录结构、文件系统等。QTreeView通常与模型(如QStandardItemModel、QFileSystemModel或自定义模型)一起使用,以管理数据和提供视图如何显示数据的规则。效果代码from......
  • C# WinForm控件及其子控件转成图片(支持带滚动条的长截图)
    概述(Overview)参考了网上的分享,感觉都不太理想:1.一个控件内如果包含多个子控件时没有考虑顺序问题;2.超出控件可显示区域时不能长截图,有滚动条会多余截取了滚动条。这个随笔旨在解决这个问题,实现带滚动条时可以长截图,并且给出了在多个子控件的情况下如何控制截图顺序的代码。......
  • 实现Avalonia平台下低配版的Dock控件:实现TabControl的可关闭
    在弄一个项目,在WPF下用Dock控件,在Avalonia平台下实现也有一个Dock控件,但用起来有点复杂。Install-PackageDock.AvaloniaInstall-PackageDock.Model.Mvvm感兴趣的可以访问网站了解:https://github.com/wieslawsoltes/Dock其实本身用的比较简单,所以就想着,用TabControl来改一下......
  • 界面控件DevExpress WinForms的流程图组件 - 可完美复制Visio功能(一)
    DevExpressWinForms的Diagram(流程图)组件允许您复制MicrosoftVisio中的许多功能,并能在下一个WindowsForms项目中引入信息丰富的图表、流程图和组织图。P.S:DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美......
  • GDI+图形显示控件(坐标轴、缩放、轨迹、图像、实时编辑等功能)
    1.显示控件介绍自动化设备(点胶、激光、贴装等等)中经常需要实时显示加工轨迹以及在线编辑加工轨迹等功能,需要用到相应的绘图显示控件。功能强的显示控件不但需要支持大量数据点显示还需要有强大的轨迹编辑功能。如下CadDisplay控件使用GDI+绘图技术,不断的在多个项目中进......