请教一下,如题,知道这个应用程序的句柄,怎么把它嵌到WinForm中的Panel控件中呢?这个应用程序是我启动的软件程序,不是Form,谢谢~~~

解决方案 »

  1.   

    用FindWindowEx获取启动的程序主窗体句柄,然后用SetParent将其父设为Panel
      

  2.   

    怎么把Panel设为其父呢?SetParent不是需要两个窗口的句柄吗?
      

  3.   

      [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "SetParent")] 
            public static extern System.IntPtr SetParent( System.IntPtr hWndChild, System.IntPtr hWndNewParent); 第一个参数是你要显示的窗体的句柄,第二参数你设为Panel的句柄
      

  4.   

    Form1 f = new Form1(); 
    f.TopLevel = false; 
    panel1.Controls.Add(f); [DllImport("user32.dll", CharSet = CharSet.Auto)] 
            public extern static IntPtr SetParent(IntPtr hChild, IntPtr hParent); 
      

  5.   

    谢谢~我是一个初学者,再请教一下我程序中的panel2的句柄该怎么获得呢?我写public IntPtr pp = panel2->Handle;报错。。
      

  6.   

    public IntPtr pp =IntPtr.Zero;
    在Form1_Load方法里面的最后在进行赋值就好了;
    pp = panel2->Handle;如果像你那样写,那么窗体还没创建出来,这时上面的控件也都没创建出来,就会先执行你写的这句代码,
    panel2还没创建出来也就不会有Handle产生了,这时调用就 报错了。
      

  7.   

    嗯,谢谢你!可以了~但是如果我不想让这个应用程序在panel2中移动,即固定在panel中,该怎么办呢?