程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> winapi-C# winfrom項目,怎麼樣實現通過WINAPI 關閉對象的句柄窗口後,還能再次獲取該句柄窗口

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()事件中就能原樣操作了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved