文号
t77992
阅读
8000
回复
12
收藏
8
解决烦人的qq右下角弹窗
2015/11/22
IP:山东
想背一会英语,qq老弹出些无聊的新闻,提示,烦死人


写了个程序


    [DllImport("User32.dll", EntryPoint = "FindWindow",CharSet = CharSet.Auto) ]
    private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
   
    [DllImport("user32.dll", EntryPoint = "FindWindowEx", CharSet = CharSet.Auto)]
    private extern static IntPtr FindWindowEx(IntPtr parent, IntPtr child, string classname, string captionName);
   
    [DllImport("user32", SetLastError = true, ExactSpelling = true)]
    public static extern bool DestroyWindow(IntPtr hndw);
    [DllImport("user32.dll", EntryPoint = "SendMessage")]
    private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
   
    static void Main(string[] args)
    {
        IntPtr HWND = new IntPtr(0);
        int delay = 100;
        string[] Title;
        string[] processTitle;
        Process[] process;
        if (args.Length > 0)
        {
            delay = Convert.ToInt32(args[0]);
            Title = new string[args.Length];
            args.CopyTo(Title, 0);
        }
        else
        {
            Title = new string[] { "腾讯新闻" };
        }
            processTitle = new string[] { "YoukuMediaCenter", "wwbizsrv" };
        while (true)
        {
            for (int i = 1; i < Title.Length; i++) 
            {
                HWND = FindWindow(null, Title);
                if (HWND != IntPtr.Zero)SendMessage(HWND, 0x0010, 0, 0);
            }
            foreach (var item in processTitle)
            {
                process = Process.GetProcessesByName(item);
                foreach (var item2 in process) item2.Kill(); 
            }
            Thread.Sleep(delay);
        }
    }
}
启动程序的时候需要把要监视关闭的窗口标题传进来
可以用命令行G:\右下角弹窗.exe "10" "腾讯新闻" "腾讯游戏" "京东" "搜狗百科" "腾讯应用宝" "游戏人生消息订阅"
也可以创建一个快捷方式

获取窗口标题可以用 spy++这个软件
如果有更好的办法,请回复,我目前只找到这个办法


attachment icon QQ右下角弹窗.rar 3.03KB RAR 30次下载

attachment icon SPY++.rar 3.72MB RAR 34次下载
11年1个月前IP:广东
798278
1楼
能不能先把那些标题写进去啊,大姐,这样傻瓜试的对我这种文盲才有用啊
引用
评论
11年1个月前IP:四川
798279
2楼
SendMessage返回值是IntPtr,hwnd、wParam和lParam也都是IntPtr,只有uMsg是int。
另外循环变量不要用i,可以用j或k,因为论坛有bug,方括号里的i会被当成ubb标记和谐掉。
引用
评论
11年1个月前IP:北京
798282
3楼
我亲测过两种方法,用在很多软件弹窗里
一是adsafe,下载安装个adsafe,有的弹窗会提示拦截,以后就没有了,
第二个方法是打开任务管理器,用文件夹打开弹窗的位置,一般是XXX.exe文件,删掉,然后新建一个txt文档,重命名成XXX.exe并且删掉.txt后缀,这样弹窗程序就是空文档了,打不开,也没法替换



再有方法就是逆向,然后去掉弹窗,但是qq不太可能,因为那些逆向软件就是腾讯的大牛写的
引用
评论
张静茹作者
11年1个月前IP:山东
798284
4楼
引用 放牛党主席:
能不能先把那些标题写进去啊,大姐,这样傻瓜试的对我这种文盲才有用啊
因为qq弹窗的标题有很多 后面几个都是我用了一个星期 发现的 然后再加进去的,这样做方便以后 再加
引用
评论
张静茹作者
11年1个月前IP:山东
798285
5楼
引用 acmilan:
SendMessage返回值是IntPtr,hwnd、wParam和lParam也都是IntPtr,只有uMsg是int。
另外循环变量不要用i,可以用j或k,因为论坛有bug,方括号里的i会被当成ubb标记和谐掉。
好的
引用
评论
11年1个月前IP:广东
798287
6楼
引用 张静茹:
因为qq弹窗的标题有很多 后面几个都是我用了一个星期 发现的 然后再加进去的,这样做方便以后 再加
雷锋
引用
评论
11年1个月前IP:浙江
798288
7楼
不错呀,好东西。。。小妹把我踢了。。。
引用
评论
11年1个月前IP:陕西
798320
8楼
用窗口类查找不行吗?
引用
评论
11年1个月前修改于 11年1个月前IP:四川
798324
9楼
引用 金星凌日:
用窗口类查找不行吗?
如果窗口类名是固定的就行,如果窗口类名是随机的或是公用的,就不一定行了。
引用
评论
11年1个月前IP:浙江
798331
10楼
可以通过消息钩子实现捕获……
不过似乎有bug,当捕获的时候崩溃了。太晚了懒得抓了,环境:Windows7 SP1 X86-64
bug1.jpg
引用
评论
张静茹作者
11年1个月前IP:山东
798336
11楼
引用 phpskycn:
可以通过消息钩子实现捕获……
不过似乎有bug,当捕获的时候崩溃了。太晚了懒得抓了,环境:Windows7 SP1 X86-64
我忘了说了,第一个参数是 个数字,代表的是 延迟时间
格式是G:\右下角弹窗.exe "10" "腾讯新闻" "腾讯游戏" "京东" "搜狗百科" "腾讯应用宝" "游戏人生消息订阅"
引用
评论
11年1个月前IP:重庆
798342
12楼
问下其他的右下弹窗的程序能治不?
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的