多个窗口关闭问题。

taotao7805 2004-11-29 11:02:33

HWND hwndc;
hwndc =::GetForegroundWindow();
::SendMessage(hwndc, WM_CLOSE, 0L, 0L);
目前我已经打开了几个窗口,我要把最下面的窗口留下不关闭,其他的都关闭,用上面的代码肯定不能实现,哪位好心人有什么好的想法可以让我少郁闷下。多谢!
...全文
187 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
oyljerry 2005-01-11
可以在EnumWindow中先比较一下,用一个CStringArray存放窗口hWnd
回复
taotao7805 2004-12-15
up
回复
老夏Max 2004-11-29
楼上贴的是我的代码啊,呵呵,不过它倒是让我想到了可以参考上面的,将你要保留的窗口进程保留,其他的使用那段代码关闭,呵呵,可以使用
BOOL IsWindow(
HWND hWnd // handle to window
);
判断进程是不是窗口!!
回复
koko1998 2004-11-29
刚看到的,看看这样可不可以
http://community.csdn.net/Expert/topic/3596/3596650.xml?temp=.5734217

参考:
void CInstallUserDLLApp::EndProgram(CString strExeName)
{
CString strExeNameToFind = strExeName;
HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(SnapShot==NULL)
{
//MessageBox("检测当前进程失败!");
return ;
}
SHFILEINFO shSmall;
CString str,strTemp;
PROCESSENTRY32 ProcessInfo;//声明进程信息变量
ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小
//返回系统中第一个进程的信息
BOOL Status=Process32First(SnapShot,&ProcessInfo);
int m_nProcess=0;
DWORD m_ProcessID=0;
while(Status)
{
m_nProcess++;
ZeroMemory(&shSmall,sizeof(shSmall));
//获取进程文件信息
SHGetFileInfo(ProcessInfo.szExeFile,0,&shSmall,
sizeof(shSmall),SHGFI_ICON|SHGFI_SMALLICON);

strTemp=ProcessInfo.szExeFile;
strTemp.MakeUpper();
strExeNameToFind.MakeUpper();
if(strTemp.Find(strExeNameToFind,0) >= 0)
{
m_ProcessID=ProcessInfo.th32ProcessID;
break;
}
//获取下一个进程的信息
Status=Process32Next(SnapShot,&ProcessInfo);
}
// TODO: Add extra validation here
if(m_ProcessID!=0)
{
HANDLE hProcess= OpenProcess( PROCESS_ALL_ACCESS, FALSE, m_ProcessID);
if(::TerminateProcess(hProcess,1))
{
//AfxMessageBox(" The process has been successfully killed",MB_OK);
;
}
}
}
回复
taotao7805 2004-11-29
我也这么想过,但是我打开的窗口是处于动态的,每次也许打开的是不一样的。难道我要用findwindow来穷举呀?这可不是个好办法。
回复
老夏Max 2004-11-29
可以使用FindWindow
回复
taotao7805 2004-11-29
我的系统里有好几百个好几千个窗口,枚举应该不是个好办法。
回复
kugou123 2004-11-29
你可以用EnumWidnows来枚举,然后在该API的回调函数里面判断,对比窗口句柄,如果是你不想关闭的窗口,就不关闭,其他被枚举出来的窗口就统统SendMessage(hWnd,WM_CLOSE,NULL,NULL); 关闭之。
回复
taotao7805 2004-11-29
如果用上面的方法是不是回造成系统资源泄露?我有一个想法,如果我已经得到了我不想关闭的那个窗口的句柄,我是不是可以加个判断我用GetForegroundWindow的到的句柄是不是我不想关闭的那个窗口的句柄,如果我的想法可行,那么怎么来进行这个判断呢?
回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 用户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-11-29 11:02
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……