当前位置: 代码迷 >> C# >> C# Winform项目中封锁form窗体后无法再次利用WIN32 API获取第三方应用系统的窗口
  详细解决方案

C# Winform项目中封锁form窗体后无法再次利用WIN32 API获取第三方应用系统的窗口

热度:119   发布时间:2016-05-05 04:53:03.0
C# Winform项目中关闭form窗体后无法再次利用WIN32 API获取第三方应用系统的窗口
在C# Winform项目,from窗体中有一个Panel控件和一个Button控件。

目前已经能够利用WIN32 API 找到“监控系统”窗口的句柄,并将那个获取到的窗口“附加”到了Panel控件上。
并能够正常在Panel控件中显示“监控系统”。

请问下,怎么样实现form窗体关闭后,再次再点击Button控件能够再次获取到“监控系统”窗口的句柄并可以放在Panel控件中正常显示“监控系统”呢?
附上自己的代码,帮忙看看是不是下面代码写得有点问题,还是其它的问题。有没有相关的参考资料,谢谢! 

----点击Button控件获取“监控系统”窗口的句柄显示到Panel控件上----
      private void button1_Click(object sender, EventArgs e)
        {
            IntPtr ptrjkWnd = API.FindWindow("TabWindowClass", null); //查找监控系统的句柄
      API.SetParent(ptrjkWnd, this.panel1.Handle);
          API.ShowWindow(ptrjkWnd, WindowsApi.API.SW_MAXIMIZE);
    }


---点击关闭form窗体------
        private void Frmjk_FormClosed(object sender, FormClosedEventArgs e)
        {
            API.PostMessage(ptravayaWnd, API.WM_CLOSE, 0, 0);
            API.PostMessage(ptravayaWnd, API.WM_QUIT, 0, 0);
            System.Threading.Thread.Sleep(10);
            Environment.Exit(Environment.ExitCode);
        }



------解决思路----------------------
关闭窗体前将它从panel里移除,否则有可能一起被关闭了
------解决思路----------------------
API.PostMessage(ptravayaWnd, API.WM_CLOSE, 0, 0);
            API.PostMessage(ptravayaWnd, API.WM_QUIT, 0, 0);
晕死,你这不是把它关了吗
  相关解决方案