我想实现像WIN98的“桌面”按钮一样,可以将桌面上所有的程序最小化,显示出桌面来。
我用了下面这些方法,可是都不能成功:
DeskHandle := GetDesktopWindow;
BringWindowToTop(DeskHandle);
或: SetForegroundWindow(DeskHandle);
或: SetWindowPos(DeskHandle,HWND_TOP,0,0,800,600,SWP_SHOWWINDOW);
或: showWindow(DeskHandle,SW_SHOWMAXIMIZED);如果依次将最前面的窗口最小化,则速度慢,效果也差,任务条有闪烁感,请问还有什么好办法?
我用了下面这些方法,可是都不能成功:
DeskHandle := GetDesktopWindow;
BringWindowToTop(DeskHandle);
或: SetForegroundWindow(DeskHandle);
或: SetWindowPos(DeskHandle,HWND_TOP,0,0,800,600,SWP_SHOWWINDOW);
或: showWindow(DeskHandle,SW_SHOWMAXIMIZED);如果依次将最前面的窗口最小化,则速度慢,效果也差,任务条有闪烁感,请问还有什么好办法?
解决方案 »
- Sleep在Delphi7中是什么意思?
- Timer与多线程
- 字体设成什么好?
- 窗体重载 Create方法的问题,帮帮忙
- 十六进制表示01 04 00 00 00 10 的CrC16 用十六进制表示是F1 C6吗
- buffer里有这样的一串数据:'FE0101001208',将其放入一个string型的LinePro中,但是发现一些问题。
- 我这简历该乍写啊,走过的,路过的,请帮帮我出出主意!
- 我是菜鸟呀!!
- 如何在当前查询的记录中再查询?
- 一个TFORM上有几十个TLabel控件、一个TButton控件,怎样才可以让单击TButton控件时让所有的TLabel控件全部隐藏起来?
- 怎么让一个窗口显示在最上层?
- 如何使TreeView中的文字类似网页中的超连接?
...
App := CreateOleObject('Shell.Application');
App.MinimizeAll;
App := NULL;
var h:HWnd;
begin
h:=handle;
while h > 0 do
begin
if IsWindowVisible(h) then
Postmessage(h,WM_SYSCOMMAND,SC_MINIMIZE,0);
h:=GetnextWindow(h,GW_HWNDNEXT);
end;
end;
var h:HWnd;
begin
h:=handle;
while h > 0 do
begin
if IsWindowVisible(h) then
Postmessage(h,WM_SYSCOMMAND,SC_restore,0);
h:=GetnextWindow(h,GW_HWNDNEXT);
end;
end;
TaskHandle := FindWindow(Pchar('Shell_TrayWnd'), nil);
h:=GetTopWindow(0);
while h > 0 do begin
if (IsWindowVisible(h)) and (h<>TaskHandle) then begin
own_window:=Getwindow(h,GW_OWNER);
if own_window<>0 then h:=own_Window;
Postmessage(h,WM_SYSCOMMAND,SC_MINIMIZE,0);
end;
h:=GetnextWindow(h,GW_HWNDNEXT);
end;
西翔的方法确实不能直接创建SHELL对象。