想在一个程序里运行另一个程序,但是第二个程序的窗口要能够放在第一个窗口里面(50分)

  • 主题发起人 主题发起人 mymy
  • 开始时间 开始时间
M

mymy

Unregistered / Unconfirmed
GUEST, unregistred user!
类似于MDI窗口,希望能将第二个程序作为一个MDI子窗口,这样的应该如何实现阿?
 
先找到第二个程序主窗体Handle<br>然后设置其窗体的Parent为当前窗体(SetParent)<br>不知道能不能满足你的要求
 
function EnumWindowsProc(hwnd:HWND;lparam:lPARAM):boolean; stdcall;<br>var<br> &nbsp;pid:^integer;<br>begin<br> &nbsp;new(pid);<br> &nbsp;GetWindowThreadProcessId(hwnd,pid);<br> &nbsp;if pid^=lparam then<br> &nbsp;begin<br> &nbsp; &nbsp;result:=false;<br> &nbsp; &nbsp;setparent(hwnd,form1.handle);<br> &nbsp; &nbsp;SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOZORDER);<br> &nbsp;end<br> &nbsp;else<br> &nbsp; &nbsp;result:=true;<br> &nbsp;dispose(pid);<br>end;<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br> &nbsp;StartupInfo:TStartupInfo;<br> &nbsp;ProcessInfo:TProcessInformation;<br>begin<br> &nbsp;FillChar(StartupInfo,SizeOf(StartupInfo),#0);<br> &nbsp;StartupInfo.cb:=SizeOf(StartupInfo);<br> &nbsp;StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;<br> &nbsp;StartupInfo.wShowWindow:=sw_show;<br> &nbsp;CreateProcess(nil,'calc.exe',nil,nil,false,Create_new_console or Normal_priority_class,nil,nil,StartupInfo,ProcessInfo);<br> &nbsp;WaitForInputIdle(ProcessInfo.hProcess, 10000);<br> &nbsp;EnumWindows(@EnumWindowsProc,ProcessInfo.dwProcessId);<br>end;
 
关<br>注<br>一<br>下
 
fjw的方法相当于用winexe阿,我要的效果是:第二个窗体最小化,就相当于MDI子窗体最小化那样。<br><br>to liuchengr<br>应该如何找到第二个窗体的handle呢?
 
findwindow('类名','窗口名')就可以找到窗体的handle了
 
看来富翁上的问题都是抢答题。。。
 
后退
顶部