如何实现将当前所有窗体最小化,等同WIN98的显示桌面(50分)

  • 主题发起人 主题发起人 lwz
  • 开始时间 开始时间
L

lwz

Unregistered / Unconfirmed
GUEST, unregistred user!
如何实现将当前所有窗体最小化,等同WIN98的显示桌面.
 
好像刚刚有人提出过这个问题?
将那些回答抄一下:
1、winexec(Pchar('rundll32 user,tilechildwindows'),sw_show);
2、// 在程序中调用 HideDesktopAllWin 就可以啦,一位老兄说,成了给他加分,呵呵。
{-------------------------------------------------------------------------------}
{ ShowWinNoAnimate }

function GetAnimation: Boolean;
var
Info: TAnimationInfo;
begin

Info.cbSize := SizeOf(TAnimationInfo);
if SystemParametersInfo(SPI_GETANIMATION, SizeOf(Info), @Info, 0) then

Result := Info.iMinAnimate <> 0 else

Result := False;
end;


procedure SetAnimation(Value: Boolean);
var
Info: TAnimationInfo;
begin

Info.cbSize := SizeOf(TAnimationInfo);
BOOL(Info.iMinAnimate) := Value;
SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
end;


procedure ShowWinNoAnimate(Handle: HWnd;
CmdShow: Integer);
var
Animation: Boolean;
begin

Animation := GetAnimation;
if Animation then
SetAnimation(False);
ShowWindow(Handle, CmdShow);
if Animation then
SetAnimation(True);
end;

procedure HideDesktopAllWin(Sender: TObject);
function EnumWindowsProc (Wnd: HWND;
LParam: LPARAM): BOOL;
stdcall;
begin

Result := True;
if (IsWindowVisible(Wnd)) and
(GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) and
(GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then

begin

ShowWinNoAnimate(Wnd, SW_MINIMIZE);
end;

end;

var
Param : Longint;
begin

Param := 0;
EnumWindows(@EnumWindowsProc , Param);
SetForegroundWindow(FindWindow(PChar('ProgMan'), nil));
SetActiveWindow(FindWindow(PChar('ProgMan'), nil));
end;




 
shellexecute(handle,'open','c:/windows/desktop/显示桌面.SCF',0,0,sw_hide);

98这么做,其他改变路径 :)
 
to yzhshi
请教:
winexec(Pchar('rundll32 user,tilechildwindows'),sw_show);
是将当前窗口平铺,若要最小化如何实现,是不是改‘tilechildwindows’
如何该。若调用 HideDesktopAllWin ,应如何调用。请指教。

 
to yzhshi
请教:
winexec(Pchar('rundll32 user,tilechildwindows'),sw_show);
是将当前窗口平铺,若要最小化如何实现,是不是改‘tilechildwindows’
如何该。若调用 HideDesktopAllWin ,应如何调用。请指教。


 
结束贴子吧?!
 
后退
顶部