文号
t77992
阅读
7999
回复
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次下载
12
张静茹作者
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:山东
798336
11楼
引用 phpskycn:
可以通过消息钩子实现捕获……
不过似乎有bug,当捕获的时候崩溃了。太晚了懒得抓了,环境:Windows7 SP1 X86-64
我忘了说了,第一个参数是 个数字,代表的是 延迟时间
格式是G:\右下角弹窗.exe "10" "腾讯新闻" "腾讯游戏" "京东" "搜狗百科" "腾讯应用宝" "游戏人生消息订阅"
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的