有两个程序A和B,A调用B,B的窗口始终在A的前面,但是不是在所有程序的最上面?
首先需要修改A程序,在调用B之前,传递A窗口句柄为参数给B或者在B中使用FindWindow也可以。
然后重载B窗体的CreateParams,类似下面:
procedure TFormB.CreateParams(var P: TCreateParams);
begin
inherited;
P.WndParent := FindWindow('TFormA','FormA');
//P.WndParent := StrToInt(ParamStr(1));
P.ExStyle := P.ExStyle or WS_EX_TOOLWINDOW;
end;