绑定外部软件的几个问题,用form1的btn1打开form2,让一个几何画板,绑定到form2得panel1里,现在是首先通过form1的btn1打开几何画板后,procedure TForm1.btn1Click(Sender: TObject);
var h:HWND;
beginWinexec('F:\delphivrml\bysj\GSP\GSP.EXE',SW_NORMAL);//打开几何画板
Form2.show();end;然后用form2的按钮绑定几何画板
procedure TForm2.Button1Click(Sender: TObject);
var h:HWND;
begin
   h := FindWindow(nil, '几何画板 - 未命名 1');
    Windows.SetParent(h, Panel1.Handle);
   //MoveWindow(h, 0,0, 350, 250, True);
end;
能不能不用先打开几何画板,就能获得它的句柄,打开form2的时候几何画板已经绑定在panel1里面的?还要我那样几何画板绑定到panel1后,他的位置不是固定的,能用鼠标拖动,能不能固定位置的?

解决方案 »

  1.   

    1,外部程序没运行前,无法确定其句柄,所以你所能采取的方法就是在启动你的程序的同时,在后台启动那个画板程序;2,你是把整个外部程序拉进你的程序里的,所以它本质上还是个独立的程序,只不过从桌面进入了你的程序面板,所以当然也是可以拖动的。要解决这个问题,有两个方法:第一,如果你坚持要把整个画板程序拉进来,那就调整好它在panel中的显示位置,正好把它的标题完全遮盖掉,但是又不能影响画板的使用;第二,不要把画板整个都拉进来,而是用FindWindowEx继续找到其中画板部分的控件句柄,然后单独把画板部分拉到panel中,由于单个控件一般情况下不具备可拖动性,所以也就解决你的问题了,当然也同样要调整好显示位置。