当前位置: 代码迷 >> C# >> C# winfrom项目,如何样实现通过WINAPI 关闭对象的句柄窗口后,还能再次获取该句柄窗口
  详细解决方案

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

热度:525   发布时间:2016-05-05 04:40:30.0
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);
        }

------解决思路----------------------
在你的窗体打开之前,外部窗体肯定是先打开了吧
那么在你的窗体关闭后,外部窗体哪里去了,回到外部了吗,还是随着你的窗体一起关闭了?
可以试试先把它移出panel,让它回到外面,再关闭你的窗体
------解决思路----------------------
API.SetParent(ptrskypeWnd, this.panel1.Handle);
这是把它放进去
你试试API.SetParent(ptrskypeWnd, null);
或者把null换成0,总之让它没有父窗体
  相关解决方案