PostMessage的小问题

wingfootedtiger 2005-05-15 07:35:24
尝试用代码关闭或者最小化所有的IE窗口
关闭代码:
void __fastcall TForm_Main::Close_IE()
{
HWND hWndNow;
while(NULL!=(hWndNow=::FindWindowEx(NULL,NULL,"IEFrame",NULL)))
{
PostMessage(hWndNow,WM_CLOSE,NULL,NULL);
}
}

最小化代码:
void __fastcall TForm_Main::Min_IE()
{
HWND hWndNow;
while(NULL!=(hWndNow=::FindWindowEx(NULL,NULL,"IEFrame",NULL)))
{
PostMessage(hWndNow,WM_SYSCOMMAND,SC_MINIMIZE,NULL);
}
}

两段代码基本没有区别,只有PostMessage的参数有些出入,也都可以实现功能,可奇怪的是最小化操作成功后程序陷入循环,CPU占用一直不下来,请问那里出了问题?应该如何修改?
...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kangji 2005-05-16
  • 打赏
  • 举报
回复
void __fastcall TForm_Main::Min_IE()
{
HWND hWndNow;
while(NULL!=(hWndNow=::FindWindowEx(NULL,NULL,"IEFrame",NULL)))
{
PostMessage(hWndNow,WM_SYSCOMMAND,SC_MINIMIZE,NULL);
if(!IsIconic(hWndNow))
break;
}
}
h2plus0 2005-05-16
  • 打赏
  • 举报
回复
char buf[100];
BOOL CALLBACK EnumWindowsProc( HWND hwnd, LPARAM lParam )
{
int ret = GetClassName(hwnd, buf, 100);
if (ret>0) {
if ( !IsIconic(hwnd) ) {
if (strcmp("IEFrame", buf)==0) {
PostMessage(hwnd,WM_SYSCOMMAND,SC_MINIMIZE,NULL);
}
}
}
return TRUE;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
EnumWindows( (FARPROC)EnumWindowsProc, 0) )
}
wingfootedtiger 2005-05-16
  • 打赏
  • 举报
回复
up,help
wingfootedtiger 2005-05-16
  • 打赏
  • 举报
回复
都不行,谁能给个测试成功的代码?
aQuarter 2005-05-15
  • 打赏
  • 举报
回复
最小化后窗口仍然存在,取得的窗口句柄不可能为空,所以While循环一直在执行的,你不妨如下改了试试:HWND hWndNow=::FindWindowEx(NULL,NULL,"IEFrame",NULL); if(hWndNow != NULL && IsIconic(hWndNow) == 0 ) PostMessage(hWndNow,WM_SYSCOMMAND,SC_MINIMIZE,NULL);代码我没试,感觉应该是这样
wingfootedtiger 2005-05-15
  • 打赏
  • 举报
回复
myy() :不解决问题啊
kingfish 2005-05-15
  • 打赏
  • 举报
回复
怎么没区别?

一个是关闭,一个是最小化
全部关闭后FindWindowEx就返回NULL,就不循环了。
最小化后则是死循环
myy 2005-05-15
  • 打赏
  • 举报
回复
void __fastcall TForm_Main::Min_IE()
{
HWND hWndNow;
while(NULL!=(hWndNow=::FindWindowEx(NULL,NULL,"IEFrame",NULL)))
{
if(!IsIconic(hWndNow))
PostMessage(hWndNow,WM_SYSCOMMAND,SC_MINIMIZE,NULL);
}
}
wingfootedtiger 2005-05-15
  • 打赏
  • 举报
回复
检查最小化的函数是什么?不太熟悉,请说一下
gxd305 2005-05-15
  • 打赏
  • 举报
回复

在while 循环中取得当前设置的窗口的状态检测一下是否是最小化
wingfootedtiger 2005-05-15
  • 打赏
  • 举报
回复
哦,谢谢,那应该怎么修改第二个代码呢?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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