如何获得当前打开的窗口的句柄,比如IE窗口,然后关闭它?
获得当前打开的所有窗口的句柄,比如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




