SetWindowPos(Form1.Handle, HWND_TOPMIOST, Left, Top, Width, height, SWP_SHOWWINDOW)可以将窗口放在所有窗口的最前面,但是这仅对一个应用程序的主窗口有效,非主窗口只能在这个应用程序的内部被置前,但是其他应用程序的窗口仍然会盖住他。
解决方法是将Form1的父窗口设为桌面,如:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
with Params do
begin
WndParent := GetdesktopWindow();
end;
end;
但是这样会在进程管理器中的应用程序中多出一个Form1,怎样才能不让出现这个Form1了,其实解决方法很简单的,只需要将Form1的caption属性设为空就可以:Form1.Caption := '';
还有另外一种可以不用将Form1的父窗口设为桌面也可以置前,那就是在窗体创建置前调用Application.NormalizeTopMosts;
然后再调用SetWindowPos也可以实现将窗口置前的效果