我想在我的程序里面,可以调用另外一个程序,并且把另外的那个程序的界面放到我的程序里面的一个FORM里面来,可以这样实现吗?各外达大多提意见!

解决方案 »

  1.   

    干脆把你要调用的程序做成ocx吧,然后把它安装到delphi上,在你要调用的程序中引入就可了,在delphi用active form 技术把它做成ocx!
      

  2.   

    步骤:
    1.使用winexec或者shellexecute调用外部程序
    2.在FormCreate事件中将外部程序放入自己的控件之中(本例子用scrollbox)//将查找对话框放入自己的窗口中use shellapi;procedure TForm1.FormCreate(Sender: TObject);
    var
       h:thandle;
       rec:trect;
    begin
       shellexecute(form1.Handle,'find','c:\',nil,nil,sw_shownormal);//调用外部程序
       sleep(300);
       h:=findwindow(nil,'搜索结果');//外部程序的窗口标题
       //放入scrollbox1中
       GetWindowRect(h,rec);
       SetWindowPos(h,HWND_TOP,0,-5-(GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYBORDER)),ScrollBox1.Width,ScrollBox1.Height,SWP_NOSIZE or SWP_SHOWWINDOW);
       windows.SetParent(h,ScrollBox1.Handle);
       ScrollBox1.HorzScrollBar.Range :=rec.Right -rec.Left ;
       ScrollBox1.VertScrollBar.Range :=rec.Bottom -rec.Top ;
    end;
      

  3.   

    你好,我如果想把“D:/winrar/winrar.exe,这个程序运行以后的界面放到我的一个
    scrollbox是,可以这样做吗,你给我的例子,我怎么实现!??可以的话, 我就给分!
      

  4.   


    1.窗口中放入scrollbox1
    2.use...
    3.写FormCreate事件代码use shellapi;procedure TForm1.FormCreate(Sender: TObject);
    var
       h:thandle;
       rec:trect;
    begin
       shellexecute(form1.Handle,'open','d:/winrar/winrar.exe','','',sw_shownormal);
       sleep(300);
       //注意,这里一定要写对.你可以运行winrar看到它的窗口标题是什么,注意空格之类的东西
       h:=findwindow(nil,'????winrar???');//外部程序的窗口标题
       //放入scrollbox1中
       GetWindowRect(h,rec);
       SetWindowPos(h,HWND_TOP,0,-5-(GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYBORDER)),ScrollBox1.Width,ScrollBox1.Height,SWP_NOSIZE or SWP_SHOWWINDOW);
       windows.SetParent(h,ScrollBox1.Handle);
       ScrollBox1.HorzScrollBar.Range :=rec.Right -rec.Left ;
       ScrollBox1.VertScrollBar.Range :=rec.Bottom -rec.Top ;
    end;