terminateprocess关闭已打开的文件夹会时,会使桌面图标消息后1秒,再显示/ 怎么修改?这个缺点?

h490516509 2009-08-06 09:22:19
terminateprocess关闭已打开的文件夹会时,会使桌面图标消息后1秒,再显示。怎么修改?这个缺点?
代码也下。我想关闭的是窗口,各种在桌面显示的窗口。用SendMessage(HWND,WM_CLOSE....),有些窗口并不接收。
所以想请问一下有什么办法吗?
HWND hWnd = ::GetDesktopWindow();
::InvalidateRect(hWnd, NULL, TRUE);
上面是更新桌面,但也并不能。
???????????????????有什么办法吗?各位高手老大!

HWND hfold=::FindWindow(NULL,"11111");
DWORD id_num;
::GetWindowThreadProcessId(hfold,&id_num);
HANDLE hd = OpenProcess(/*PROCESS_ALL_ACCESS*/ PROCESS_QUERY_INFORMATION |PROCESS_VM_READ|PROCESS_TERMINATE,FALSE, id_num);
TerminateProcess(hd, 0);
CloseHandle(hd);
...全文
52 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
h490516509 2009-08-06
HWND hfold=::FindWindow(NULL,"文件夹");
::PostMessage(hfold,WM_CLOSE,0,0);
可以了。谢谢各位。
回复
aa3000 2009-08-06
::SendMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
回复
Yofoo 2009-08-06
关闭已打开的文件夹会时

已打开的文件夹是 系统外壳进程 Explorer.exe 的一个窗体, 桌面也是属于这个进程, 结束后就会消失, 这很正常

用 WM_SYSCOMMAND 消息关闭
::PostMessage(hWnd, WM_SYSCOMMAND, SC_CLOSE, 0);
回复
h490516509 2009-08-06
HWND hfold=::FindWindow(NULL,"文件夹");
::SendMessage(,WM_CLOSE,0,0);
HWND hfold=::FindWindow(NULL,"文件夹");
PostMessage(hfold,WM_QUIT,NULL,NULL);

上面好像并不行。
回复
h490516509 2009-08-06
[Quote=引用 4 楼 biweilun 的回复:]
那你为什么不用ExitProcess?反正进程是你自己创建的。用WaitForSingleObject等待它安全关闭并返回
[/Quote]


我想结束的是别的窗口进程。。。
回复
h490516509 2009-08-06
[Quote=引用 3 楼 tttyd 的回复:]
我感觉问题可能是使用TerminateProcess结束进程,使得进程没有机会清理内存,以至于需要操作系统代劳。
解决的方法就是让进程正常的结束。那就只能使用WM_QUIT或WM_CLOSE等之类的消息了。
[/Quote]

好像并不行啊,还是我写的代码有问题?不明,可不可以写出代码?谢谢
回复
biweilun 2009-08-06
那你为什么不用ExitProcess?反正进程是你自己创建的。用WaitForSingleObject等待它安全关闭并返回
回复
雪影 2009-08-06
我感觉问题可能是使用TerminateProcess结束进程,使得进程没有机会清理内存,以至于需要操作系统代劳。
解决的方法就是让进程正常的结束。那就只能使用WM_QUIT或WM_CLOSE等之类的消息了。
回复
h490516509 2009-08-06
[Quote=引用 1 楼 tttyd 的回复:]
PostMessage(WM_QUIT);试一试

[/Quote]
谢谢给予的关注,但并不能。
回复
雪影 2009-08-06
PostMessage(WM_QUIT);试一试
回复
发动态
发帖子
硬件/系统
创建于2007-09-28

2590

社区成员

VC/MFC 硬件/系统
申请成为版主
社区公告
暂无公告