先用FindWindow找到这个外部应用程序的主窗口,然后用SetWindowPos设置它的大小和位置。

解决方案 »

  1.   

    上面这个方法不是最佳方法,只是最容易的,最好是用CreateProcess,在它的StartInfo中就设定主窗口的大小和位置。
      

  2.   

    能给个具体的原代码吗?比如我要运行的程序位置是:c:\winnt\notepad.exe
    窗口的位置是:x:100,y:100,大小是:width= 200,height=200.
      

  3.   

    这个例子我启动NOTEPAD,然后获得窗口句柄,类似的完成你自己的操作。
    可以使用findwindow函数来获得window句柄,但好像不是很可靠。procedure TForm1.Button1Click(Sender: TObject);
    var
      NowHandle:HWND;
      winTitle:array [0..255] of char;
      nowPos:integer;
    begin
      //启动NOTEPAD
      winexec('c:\winnt\notepad.exe',SW_NORMAL);
      Nowhandle:=Getwindow(handle, GW_HWNDFIRST);
      while NowHandle<>0 do begin
        GetwindowText(Nowhandle,winTitle,255);
        nowpos:=pos('记事本',trim(string(wintitle)));
        if NowPos<>0 then begin
          setwindowpos(Nowhandle,HWND_TOP,0,0,500,500, SWP_SHOWWINDOW );
          exit;
        end
        else begin
          NowHandle:=GetWindow(NowHandle,GW_HWNDNEXT);
        end;
      end;
    end;
      

  4.   

    Venne(感觉一下) 说的不错,我也曾经这样用过的
      

  5.   

    可是问题是我并不知道窗口的title啊,那我怎么确定?
      

  6.   

    用FindWindow找到这个外部应用程序的主窗口,然后用SetWindowPos设置它的大小和位置。
      更好是用CreateProcess,在它的StartInfo中就设定主窗口的大小和位置。
      

  7.   

    但是你会知道你启动的是什么程序啊。一般程序启动后都会有特征字串,
    或者你使用楼上所说使用CreateProcess也可以,但是你要填一些结构,会比较麻烦一些。如果你连要启动什么程序都不知道的话,只有另外考虑了。你的情况现在说的和开始希望的并不完全一样了。