winapi-C# winfrom项目,怎么样实现通过WINAPI 关闭对象的句柄窗口后,还能再次获取该句柄窗口

问题描述

C# winfrom项目,怎么样实现通过WINAPI 关闭对象的句柄窗口后,还能再次获取该句柄窗口

在C# Winfrom项目中,from窗体中,有一个Panel控件。
目前已经实现将对象的窗口通过winAPI获取到句柄窗口放到了Panel控件中。
请问怎么样实现关闭from窗体后,下次再进入from窗体后,还通过winAPI获取到句柄窗口放到了Panel控件中。
关闭from窗体的事情需要怎么样写,才能实现通过winAPI获取到句柄窗口放到了Panel控件中。

附上代码(通过winAPI获取到句柄窗口放到了Panel控件中):
private void Form2_Load(object sender, EventArgs e)
{
ptrskypeWnd = API.FindWindow("CBoxMainFrame", null);

        API.SetWindowPos(ptrskypeWnd, new IntPtr(-2), 0, 0, Global.Globals.Object_WIDTH, Global.Globals.Object_HEIGHT, 0x0002);

        System.Threading.Thread.Sleep(500);

        MyInvoke mi = new MyInvoke(SetPanel);

        BeginInvoke(mi, new object[] { ptrskypeWnd });
    }

    /// <summary>
    /// 将嵌入Panel控件
    /// </summary>
    public void SetPanel(IntPtr ptrskypeWnd)
    {

        //label1.Text += str + System.Environment.NewLine;
        API.SetParent(ptrskypeWnd, this.panel1.Handle);

        API.ShowWindow(ptrskypeWnd, WindowsApi.API.SW_MAXIMIZE);
    }

解决方案

再Closing()事件中通过SetParent()把ptrskypeWnd还原到桌面窗口上(类名#32769),避免该窗口被连带关闭。
下次Load()事件中就能原样操作了。

解决方案二:

     IntPtr ptrDocmentWnd = API.FindWindow("#32769", null);
        API.SetParent(ptrWnd, ptrDocmentWnd);

                    ptrDocmentWnd一直为零,找不到桌面窗口句柄。是不是那有误呀,帮忙看看?
时间: 2024-09-19 00:35:53

winapi-C# winfrom项目,怎么样实现通过WINAPI 关闭对象的句柄窗口后,还能再次获取该句柄窗口的相关文章

C# Winfrom项目,如何将form窗体由矩形绘制成圆形。

问题描述 C# Winfrom项目,如何将form窗体由矩形绘制成圆形. 在C# Winfrom项目中,如何将form窗体由矩形绘制成圆形.请帮忙看看如何设置form窗体可以达到下面截图中的圆形效果.谢谢!最好能够与截图中的圆形做得十分接近(圆形的背景色.字体.线条等). 解决方案 不规则窗体代码下载:http://files.cnblogs.com/alexis/IrregularForm.rar 解决方案二: 使用protected override void OnPaint(PaintEv

panel-C# Winfrom项目,如何实现Panel控件响应键盘事件

问题描述 C# Winfrom项目,如何实现Panel控件响应键盘事件 在C# Winfrom 项目中,有一个from窗体和一个Panel控件. 目前from窗体和Panel控件都是全屏显示.并且在Panel控件内用于加载显示外部应用程序. 目前遇到一个问题就是按下键盘的"Esc"键,无法响应键盘的事件. 无法实现按下键盘的"Esc"键后就立即退出整个程序. 请问怎么样解决下用户按下键盘的"Esc"键后无法响应键盘的事件? 解决方案 使用下面的代

c#-C# Winfrom项目,运行程序一段时间后提示“内在不足”的报错信息。

问题描述 C# Winfrom项目,运行程序一段时间后提示"内在不足"的报错信息. 在C# Winfrom项目,有一个form窗体,六个Panel控件(用于放置显示监控视频图像的用户自定义控件), 还有一个timer计时器控件(设置每隔2分钟调用其它六个监控视频图像放到对应的Panel控件) 目前遇到的问题是,监控点的视频图像有的由于网络好点显示加载视频图像快点,有的由于网络不是太好加载显示视频图像慢点. 在form窗体运行一段时间后,导致这个form窗体的六个Panel控件在轮流显示

C# Winfrom项目中,如何制作截图中的form窗体以及lable字体的样式

问题描述 C# Winfrom项目中,如何制作截图中的form窗体以及lable字体的样式 在C# Winfrom项目中,如何将form窗体设置背景色.前景色.透明度以及将Lable控件中的文字如何设置大小.颜色.字体. 可以达到或接近下面截图中的效果. 个人在制作的过程中发现与截图中的效果有点差异,没有达到或接近截图中的效果.请各位帮忙大致的说明下整个过程或提供相关的参考资料,谢谢. 附截图: 解决方案 基本方法就是自己绘制,或用第三方的库,如果人家是一张图片,你想仿照,基本没戏,因为其中涉及

C# Winfrom项目,TableLayoutPanel控件设置问题,帮忙看看。

问题描述 C# Winfrom项目,TableLayoutPanel控件设置问题,帮忙看看. C# Winfrom项目,在form1窗体中使用TableLayoutPanel控件,里面分好九宫格,塞入的Panel,并且Dock设置为fill 具体操作过程如下: 首先放一个TableLayoutPanel,设置它的dock为fill 然后点属性,出现之前给你看的对话框 列下拉添加3列,每列33% 同样的道理,添加3行,每行也是33% 回到界面设计器,然后在每个格子里放一个panel,分别dock也

C# winfrom项目,如何设置获取form窗体圆形背景图片的区域

问题描述 C# winfrom项目,如何设置获取form窗体圆形背景图片的区域 在C# winfrom项目,有一个form窗体,在form窗体中有一个pictureBox控件,且充满整个form窗体.在pictureBox控件中嵌入了一张圆形的图片.在圆形的图片中画了三个区域.请问如何获取图形中的三个区域,然后分别设置三个区域的点击事件. 请各位帮忙提供下这方面的相关源码或资料.谢谢. 解决方案 请各位帮忙看看,谢谢.

c# winfrom项目,如何实现在form窗体中点击鼠标右键自动关闭该窗体

问题描述 c# winfrom项目,如何实现在form窗体中点击鼠标右键自动关闭该窗体 在C# Winfrom项目中,两个form窗体(form1.form2), 在form1窗体中有个Button控件(实现点击该按钮弹出form2窗体). 在form2窗体中包括有一个Panel控件,在Panel控件中放置一个Label控件以及三个Button控件(button1.button2以及button3). 目前遇到点困难: 如果用户鼠标点击在了form2窗体中,用户再点击鼠标右键,可以响应form2

c#-C#中得winfrom项目,如何导入excl文本,并且可以获取数据的数量,最后可以进行打印或则导出

问题描述 C#中得winfrom项目,如何导入excl文本,并且可以获取数据的数量,最后可以进行打印或则导出 我要做的是一个摇奖的程序,导入excl文本,并且能获取数据的数据数量,最后导出或则是打印的技术代码,大神们,求助呀! 解决方案 先导入excel插件,然后就可以调用了. Excel.Application excel = new Excel.Application(); Excel.Workbook book = excel.Workbooks.Add(true); Excel.Work

C# Winfrom项目,如何在from窗体中控制两个timer控件时间的同步显示

问题描述 C# Winfrom项目,如何在from窗体中控制两个timer控件时间的同步显示 在C# Winfrom项目中,一个from窗体,两个timer控件(timer1和timer2),两个Label控件(labe1和label2), timer1是实现0到1分钟的倒计时显示在显示labe1中,timer2是实现到1分钟后自动显示当前时间到label2中. 两个button控件(button1和button2).button1和button2分别控制timer1的开始和暂停. timer1