如何关闭“我的电脑”窗体

chenzhechenge 2005-06-09 07:02:57
我想用代码关闭“我的电脑”的窗体,可是怎么都关不了,但是关闭其他窗体就可以,到底为什么?
本人的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
wndHandle: HWnd;
begin
wndHandle := FindWindow(nil, PChar('我的电脑'));
if wndHandle <>0 then
SendMessage(wndHandle,WM_Close,0,0) ;
end;
...全文
90 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
creativepeter 2005-06-11
  • 打赏
  • 举报
回复
To chenzhechenge ():
有些时候获取思路比获得源代码更能让人成长。由于时间关系,我提供解决该问题的思路。
为了得到所有窗口的句柄,我们必须使用windows枚举函数EnumWindows来遍历windows的窗口列表,该函数可以使用一个回调函数作为参数,并用这个回调函数来对每一个系统中的窗口进行调用直到最后一个窗口或回调函数返回false为止,这个回调函数
function EnumWndProc(hwnd:Thandle;param:Cardinal):bool;stdcall;
规定有两个参数(handle,Cardinal,只用注意第一个handle参数它表示由枚举函数当前遍历到的窗口句柄)。
在该回调函数中编写你的业务逻辑,比如发送关闭窗体的消息等等即可达到你要的功能。
有关EnumWindows和回调函数的概念与用法你可以自行查阅相关资料。
tanlijun37 2005-06-10
  • 打赏
  • 举报
回复
EnumWindow()遍历所有窗口,然后发送关闭消息。。
chenzhechenge 2005-06-10
  • 打赏
  • 举报
回复
现在我想再问一个问题:怎样才能关闭所有已经运行窗体
Corn1 2005-06-10
  • 打赏
  • 举报
回复
因为当你在“我的电脑”窗体内选择任意一个文件夹或磁盘以后,该窗体的Caption就变成该文件夹或磁盘的Label了,所以,用这种方法是得不到该窗体的handle的。
至于怎么得到,还没想到...
creativepeter 2005-06-09
  • 打赏
  • 举报
回复
To chenzhechenge ():
可以这样解决,将SendMessage(wndHandle,WM_Close,0,0);改成
PostMessage(wndHandle,WM_Close,0,0);即可。
tonycjl 2005-06-09
  • 打赏
  • 举报
回复
SendMessage(wndHandle,WM_DESTROY,0,0);
试试

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧