• C# 使用Win32 API将1个EXE程序嵌入另1个程序中


    已经干到天快亮了,就不废话直接贴点儿代码吧

            private const int WS_THICKFRAME = 262144;
            private const int WS_BORDER = 8388608;
    
            /// <summary>
            /// 查找窗口
            ///第一个参数是窗口的标题,第二个参数可直接用 null
            ///通过窗口的标题查找对应的窗口
            /// </summary>
            [DllImport("user32.dll")]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    
            //设置窗口的父窗体
            [DllImport("user32.dll", SetLastError = true)]
            private static extern long SetParent(IntPtr hWndChild, IntPtr hWndNewParent); //该api用于嵌入到窗口中运行
    
            //获取窗口样式
            [DllImport("user32.dll")]
            public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
    
            //设置窗口样式
            [DllImport("user32.dll")]
            public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
    
            //设置窗口位置
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            public static extern int MoveWindow(IntPtr hWnd, int x, int y, int nWidth, int nHeight, bool BRePaint);
    
         //设置过后就不再重复设置
         bool isSeted = false;
    
            //传入子窗体的句柄(可以使用FindWindow获取)
            public void SetWindowParent(IntPtr wnd)
            {
                if (!isSeted)
                {
                    //子窗口句柄,父窗口句柄(我这里用的Winform里的panel控件的句柄,这样就会将我的子窗口嵌入到panel里面)
                    SetParent(wnd, unityPanel.Handle);
    
                    Int32 wndStyle = GetWindowLong(wnd, -16);
                    wndStyle &= ~WS_BORDER;
                    wndStyle &= ~WS_THICKFRAME;
                    SetWindowLong(wnd, -16, wndStyle);
                    MoveWindow(wnd, 0, 0, unityPanel.Width, unityPanel.Height, true);
    
                    isSeted = true;
                }
            }    
  • 相关阅读:
    关于Ext tabpanel 自定义active 样式/iconCls
    关于vue使用 npm run dev报错原因
    vue学习笔记(1)
    BeanCreationNotAllowedException: Error creating bean with name 'cxf' 的原因和解决方案
    js做四则运算时,精度丢失问题及解决方法
    java word/doc/docx文档转PDF 加水印
    HTML学习笔记
    (小白疑问求大神解答)可否理解为数据库就是excel表格的封装?
    excel表格加减法
    基础算法思想
  • 原文地址:https://www.cnblogs.com/mr-yoatl/p/7594750.html
Copyright © 2020-2023  润新知