能不能先把那些标题写进去啊,大姐,这样傻瓜试的对我这种文盲才有用啊
<code class="lang-c"> [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<i>); 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); } } }</i></code>启动程序的时候需要把要监视关闭的窗口标题传进来
引用 放牛党主席:因为qq弹窗的标题有很多 后面几个都是我用了一个星期 发现的 然后再加进去的,这样做方便以后 再加
能不能先把那些标题写进去啊,大姐,这样傻瓜试的对我这种文盲才有用啊
引用 acmilan:好的
SendMessage返回值是IntPtr,hwnd、wParam和lParam也都是IntPtr,只有uMsg是int。
另外循环变量不要用i,可以用j或k,因为论坛有bug,方括号里的i会被当成ubb标记和谐掉。
引用 张静茹:雷锋
因为qq弹窗的标题有很多 后面几个都是我用了一个星期 发现的 然后再加进去的,这样做方便以后 再加
引用 金星凌日:如果窗口类名是固定的就行,如果窗口类名是随机的或是公用的,就不一定行了。
用窗口类查找不行吗?
引用 phpskycn:我忘了说了,第一个参数是 个数字,代表的是 延迟时间
可以通过消息钩子实现捕获……
不过似乎有bug,当捕获的时候崩溃了。太晚了懒得抓了,环境:Windows7 SP1 X86-64
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。