高高手请进!(100分)

  • 主题发起人 主题发起人 花继勇
  • 开始时间 开始时间

花继勇

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个程序,一个叫程序1,有两个窗体组成:主窗体form1和form2;
一个叫程序2,只有一个窗体form3。现在在form1,form2和form3上
各有一个按钮。它们的单击事件如下:
form1上:form2.show;
form2上:application.Minimize;winexec(pchar('程序2'),SW_SHOW);
form3上:程序1最大化;close;
请问高手,这个“程序1最大化”该怎么做?
 
BorderStyle:=bsNone;
WindowState:=wsMaximized;
 
Application.Restore
然后 主form.WindowState = wsMaximized
 
注意,程序1和程序2是两个不同的可执行程序,即"程序1.exe"和"程序2.exe"
form1和fomr2在“程序1.exe”上
form3在“程序2.exe”上
 
小弟愚见:
  花继勇应该是想在程序2的窗体form3上的按钮单击时激活程序1并使它
最大化。我想可以用EnumWindows或GetWindow之类的函数来找到程序1中Form1
或Form2的窗口句柄,然后用SetActiveWindow来激活程序1,用ShowWindow来使
程序1最大化。没试过,不知是否正确?
 
PostMessage(FindWindow('TForm1',nil),WM_SYSCOMMAND,SC_MAXIMIZE,0);
 
你的这种设计方法很不好,2个不同的程序之间最好不要有太多的关联.

我的建议是:
在程序1里面用createprocess执行程序2, 并用waitforsingleobject等待
程序2的运行结束,然后将自己恢复最大化.
程序2里面什么也不用考虑.

 
程序1、2中都用RegisterWindowMessage申请一个消息,在程序2中
PostMessage HWND_BROADCAST 这个消息,程序1收到这个消息就自己
处理最大化
 
这些简单的控制,用几个消息就可,
要走的复杂了,还得走OLE。
 
沈前卫的方法有效。
 
多人接受答案了。
 
程序2中可以获得程序1的handle;然后使用api函数是窗口最大化
 
后退
顶部