销毁其他进程的弹窗

简介:

场景说明

         针对很多软件弹出广告信息,影响工作效率,但是又无法关闭该软件,因为这样会导致失去该软件功能。尝试使用MFC,发送销毁的信息给关闭的窗口。

应用的知识

1)定时器,定时检测

SetTimer, OnTimer

2)根据窗口标题查找界面句柄

FindWindow

3)发送关闭消息给窗口

SendMessage

具体代码如下

void CCloseWindowsDlg::OnTimer(UINT_PTRnIDEvent)

{

 CString szWinTitleName[3]={"京东","腾讯新闻","腾讯大粤网新闻"};

  for(int i=0; i<3;i++)

  {

   HWND   hWnd;

   hWnd   =   ::FindWindow(NULL, szWinTitleName[i]);

   ::SendMessage(hWnd,WM_CLOSE,0,0);

  }

 CDialog::OnTimer(nIDEvent);

}

4 实战过程

1CloseWindow 无效

只是最小化界面

2DestroyWindow无效

通过GetLastError函数发现,返回5,通过错误查找工具,提示信息:拒绝访问

   int nRet = ::DestroyWindow(hWnd);

   DWORD dwError = 0;

   if (nRet == 0)

    {

     dwError = GetLastError();

}

根据MSDN说明,不能在非创建线程上调用DestroyWindow;若要在其它线程上关闭窗口,不可以直接调用DestroyWindow(错误"拒绝访问"),也不可以只发送WM_DESTROY,因为DestroyWindow才能完整的关闭窗口,WM_DESTROY消息只是关闭流程的一部分,甚至是最"无用"的一部分--WM_DESTROY只是用户响应的接口,而真正清理窗口的工作由DestroyWindow的其它部分完成。

要在其它线程上关闭窗口,可以向窗口发送WM_CLOSE消息,若窗口过程未在WM_CLOSE的处理中取消关闭操作,则DefWindowProc会默认调用DestroyWindow(彼时自然是在窗口的创建线程上)。

效果:该功能还是不行的,因为只有等弹窗出现了,才会销毁窗口,所以会看到弹窗一闪而过,远远没有达到要求,是否可以截获创建窗口的消息,然后防止分发的方式进行拦截,可能是一种有效的方法(目前设置1ms的定时计划,还是不行)

 


     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1727965,如需转载请自行联系原作者



相关文章
|
消息中间件 Java
什么是线程和进程?是如何创建、同步、通信、销毁的?
什么是线程和进程?是如何创建、同步、通信、销毁的?
284 0
|
Linux 调度
【操作系统】进程的创建与销毁
【操作系统】进程的创建与销毁
【操作系统】进程的创建与销毁
Python多进程 主进程结束前如何销毁子进程
Python多进程 主进程结束前如何销毁子进程
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
569 13
|
Linux 数据库 Perl
【YashanDB 知识库】如何避免 yasdb 进程被 Linux OOM Killer 杀掉
本文来自YashanDB官网,探讨Linux系统中OOM Killer对数据库服务器的影响及解决方法。当内存接近耗尽时,OOM Killer会杀死占用最多内存的进程,这可能导致数据库主进程被误杀。为避免此问题,可采取两种方法:一是在OS层面关闭OOM Killer,通过修改`/etc/sysctl.conf`文件并重启生效;二是豁免数据库进程,由数据库实例用户借助`sudo`权限调整`oom_score_adj`值。这些措施有助于保护数据库进程免受系统内存管理机制的影响。
|
Linux Shell
Linux 进程前台后台切换与作业控制
进程前台/后台切换及作业控制简介: 在 Shell 中,启动的程序默认为前台进程,会占用终端直到执行完毕。例如,执行 `./shella.sh` 时,终端会被占用。为避免不便,可将命令放到后台运行,如 `./shella.sh &`,此时终端命令行立即返回,可继续输入其他命令。 常用作业控制命令: - `fg %1`:将后台作业切换到前台。 - `Ctrl + Z`:暂停前台作业并放到后台。 - `bg %1`:让暂停的后台作业继续执行。 - `kill %1`:终止后台作业。 优先级调整:
1354 5
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
706 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
|
算法 Linux 调度
探索进程调度:Linux内核中的完全公平调度器
【8月更文挑战第2天】在操作系统的心脏——内核中,进程调度算法扮演着至关重要的角色。本文将深入探讨Linux内核中的完全公平调度器(Completely Fair Scheduler, CFS),一个旨在提供公平时间分配给所有进程的调度器。我们将通过代码示例,理解CFS如何管理运行队列、选择下一个运行进程以及如何对实时负载进行响应。文章将揭示CFS的设计哲学,并展示其如何在现代多任务计算环境中实现高效的资源分配。
|
存储 缓存 安全
【Linux】冯诺依曼体系结构与操作系统及其进程
【Linux】冯诺依曼体系结构与操作系统及其进程
394 1

热门文章

最新文章