超级简单问题,散分(100分)(100分)

  • 主题发起人 主题发起人 huifi
  • 开始时间 开始时间
H

huifi

Unregistered / Unconfirmed
GUEST, unregistred user!
那位大虾知道windows任务栏中的快速启动栏中的《[red]显示桌面[/red]》按钮的功能是用什<br>么函数实现的或在delphi怎么实现???????<br>在线等待。。。。。。
 
我觉得<br>你可以最小化所有窗口<br>即是了
 
使用 api函数:<br>函数原形<br>BOOL CloseWindow(HWND hWnd);<br><br>&nbsp; &nbsp;
 
在程序中运行系统目录下的"显示桌面.scf"就可以
 
有以下方法可以考虑使用:<br>一是获取所有窗口的句柄,然后最小化所有窗口。查找窗口的API是EnumWindows函数和<br>FindWindow函数,两个函数分别用于枚举所有窗口和查找特定窗口,本人的思路是先用第一个<br>函数列出所有窗口,然后一一对其进行最小化。至于最小化用什么函数,我不清楚。<br>另一种方法为:<br>显示桌面的快捷键是CTRL+D,我们可以利用消息来实现。我们可在程序中产生一个系统按键<br>(CTRL+D)的消息,然后让系统捕获到该消息,系统就会自己执行显示桌面的程序了。<br>还有一种方法就是执行显示桌面的程序,该程序好像是一个快捷方式,不知是在WINDOWS目录下还<br>是在系统目录下可以找到的。至于是什么名称,呵呵,我忘记了。<br>不好意思,初来此地,水平有限,回答问题总是一半,各位海涵。
 
最小化用<br>原形:<br>BOOL CloseWindow(HWND hWnd);
 
非常感谢你的启发,我想能实现这一功能的人不会太多。<br>本来我不会,经过努力,终止实现了,以下过程将该死<br>的“记录本”放入快速启动区(WIN98):<br><br>首先 在 uses 中加入 registry,comobj,activex,shlobj,<br>再添加一按钮,粘贴以下代码,如有问题及时联系。<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>&nbsp; Reg: TRegIniFile;<br>&nbsp; WFileName: WideString;<br>&nbsp; AnObj: IUnKnown;<br>&nbsp; Shlink: IShellLink;<br>&nbsp; PFile: IPersistFile;<br>&nbsp; programfile,linkfile:string;<br>begin<br>&nbsp; programfile:='c:/windows/notepad.exe';<br>&nbsp; linkFile:='记事本';<br>&nbsp; try<br>&nbsp; coinitialize(nil);<br>&nbsp; AnObj := CreateComObject(CLSID_ShellLink);<br>&nbsp; shLink := AnObj as IShellLink;<br>&nbsp; PFile := AnObj as IPersistFile;<br>&nbsp; shLink.SetPath(PChar(programfile));<br>&nbsp; shLink.SetWorkingDirectory(PChar(ExtractFilePath(ProgramFile)));<br>&nbsp; Reg := TRegIniFile.Create('Software/MicroSoft/Windows/CurrentVersion/GrpConv');<br>&nbsp; WFileName := Reg.ReadString('MapGroups', 'Quick Launch', '') +<br>&nbsp; &nbsp; '/' + linkfile + '.lnk';<br>&nbsp; PFile.Save(PWChar(WFileName), True);<br>&nbsp; Reg.Free;<br>&nbsp; except<br>&nbsp; end;<br>end;<br><br>
 
to Writer:<br>&nbsp; 找遍整个系统也没有找到"显示桌面.scf"
 
你成功了没有?等会儿告诉你。
 
to jsxjd:<br>我在winXP中试了:<br>[h2][red]不成功!!!!!!!![/red][/h2]
 
你有 98 环境吗?我在WIN98 下绝对成功,否则不会有觉不睡.
 
其实不管在什么环境下,改变一下思路就可以了。
 
to jsxjd:<br>98 环境我没有,我要的"显示桌面"怎么实现???
 
马上告诉你,等着。。。。
 
将 GrpConv 改成 Explorer<br>将 MapGroups 改成 Shell Folders<br>将 Quick Launch 改成 Desktop<br>你转得真快,其实你什么都明白了,<br>因为我连测试的 showmessage 都没拿掉。
 
能这样实现我觉得很高兴,以前我都没想到。非常感谢。<br><br>能告诉我结果吗?
 
你是要实现“显示桌面”功能??<br>
 
我是要实现“显示桌面”功能,不过你实现在功能也不错,我也实现了<br>非常感谢,就是还差“显示桌面”功能,你能实现吗???
 
显示桌面功能更简单,一条语句就实现:<br>uses shellapi<br><br>&nbsp; ShellExecute(GetDesktopWindow(),<br>&nbsp; 'open','C:/WINDOWS/Application Data/Microsoft/Internet Explorer/Quick Launch/显示桌面.scf',<br>&nbsp; &nbsp; '','',0);<br>当然这是在98下的,你应该知道在 xp 下如何做?<br>
 
不知路径是否可从注册表中读出,不同的系统路径不同,如我的winXP就是:<br>'C:/Documents and Settings/.../Internet Explorer/Quick Launch显示桌面.scf'<br>[red][h2]非常非常非常非常感谢!!!![/h2][/red]
 

Similar threads

回复
0
查看
978
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部