CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

如何获得当前打开的窗口的句柄,比如IE窗口,然后关闭它?

楼主zdzwww(方梓)2002-11-28 21:41:42 在 Delphi / Windows SDK/API 提问

获得当前打开的所有窗口的句柄,比如IE窗口,然后关闭它 问题点数:100、回复次数:13Top

1 楼d983074(d983074)回复于 2002-11-29 08:49:02 得分 10

用EnumWindows遍历所有窗体的handle,然后向每个窗体发送关闭消息  
  sendmessage(handle,wm_close,0,0)Top

2 楼stanely(俺是邢她汉子)回复于 2002-11-29 15:02:07 得分 0

循环h:=findwindow(nil,nil),然后sendmessage(h,wm_close,0,0)Top

3 楼yang6130(柳轻风)回复于 2002-11-29 18:55:24 得分 10

对IE窗口用sendmessage(h,wm_close,0,0)   是关闭不了的。  
  可以用   Microsoft   Shell   Controls   and   automation  
  类库。(project-->import   type   library)Top

4 楼hansion3406(阿木㊣拖鞋男)回复于 2002-11-29 19:51:45 得分 0

好像可以吧..Top

5 楼ShanShiMin(Delphi+C#=我的最爱)回复于 2002-11-29 20:01:56 得分 20

如果知道窗口类,那么:hwnd:=FindWindow(ClassName,nil);  
  如果知道窗口标题,那么:hwnd:=FindWindow(nil,CaptionText);  
  然后,SendMessage(hwnd,WM_CLOSE,0,0);Top

6 楼ZHENG017()回复于 2002-11-30 12:00:39 得分 50

不行那这得到进程id,然手中止它.  
  DWORD   GetProcessIdFromName(LPCTSTR   name)  
  {  
      PROCESSENTRY32   pe;  
  DWORD   id   =   0;  
  HANDLE   hSnapshot   =   CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);  
  pe.dwSize   =   sizeof(PROCESSENTRY32);  
  if(   !Process32First(hSnapshot,&pe)   )  
  return   0;  
  do  
  {  
  pe.dwSize   =   sizeof(PROCESSENTRY32);  
  if(   Process32Next(hSnapshot,&pe)==FALSE   )  
  break;  
  if(strcmp(pe.szExeFile,name)   ==   0)  
  {  
  id   =   pe.th32ProcessID;  
  break;  
  }  
   
  }   while(1);  
  CloseHandle(hSnapshot);  
  return   id;  
  }  
  HANDLE   myhandle==OpenProcess(PROCESS_ALL_ACCESS,TRUE,id);  
  TerminateProcess(myhandle,0);Top

7 楼ehom(?!)回复于 2002-11-30 12:32:34 得分 0

把SendMessage改PostMessageTop

8 楼flyingkiller(大飞虫)回复于 2002-12-02 09:40:30 得分 0

PostMessage也关闭不了。Top

9 楼ehom(?!)回复于 2002-12-02 11:19:58 得分 10

关比了吗?你自己试试再说!  
   
  h:=findwindow('IEFrame',nil);  
  postmessage(h,wm_close,0,0);Top

10 楼idotnet(我和.NET不得不说的故事)回复于 2002-12-15 01:28:45 得分 0

同意yang6130(2.5G)Top

11 楼smilelhh(blue)回复于 2002-12-21 11:27:37 得分 0

h:=findwindow('IEFrame',nil);  
  postmessage(h,wm_close,0,0);  
  我这儿可以呀.Top

12 楼wyhhc(一研)回复于 2002-12-22 14:52:57 得分 0

h:=findwindow('IEFrame',nil);  
  postmessage(h,wm_syscommand,sc_close,0);  
  Top

13 楼zdzwww(方梓)回复于 2003-05-08 13:59:12 得分 0

感谢大家Top

相关问题

  • 如何获取打开的IE窗口句柄并且在过一段时间后关闭这个窗口
  • 我如何得到IE的句柄?
  • IE里空件句柄的问题
  • 如何获取IE的窗口句柄?
  • 怎样得到已经打开的任何窗口的句柄?
  • 关于进程可以打开的文件句柄数?
  • 如何获得用shell打开的程序窗口的句柄?
  • _open打开的文件句柄能给windows API用吗?
  • FileCreate得到的句柄用FileClose()关闭的问题!
  • c#打开WORD以后,如何获得打开WORD的窗口句柄?

关键词

  • findwindow
  • ieframe
  • hsnapshot
  • nil
  • 关闭
  • pe
  • postmessage
  • sendmessage
  • processentry
  • wm

得分解答快速导航

  • 帖主:zdzwww
  • d983074
  • yang6130
  • ShanShiMin
  • ZHENG017
  • ehom

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo