C#怎么用Process关闭指定网址的网页?

志起计算机编程 2013-12-02 01:47:27
我知道可以用Process打开指定网址的网页,但是怎么关闭指定网址的网页啊。好像获取了所有进程之后没办法得到网址信息,因为获取到的进程很多都不是网页。所以想请问一下,有办法在获取所有进城之后,搜索到我指定的网址的那个网页,然后Kill掉呢?
...全文
511 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞小猪 2013-12-02
  • 打赏
  • 举报
回复
引用 17 楼 u012999424 的回复:
谢谢几位的指点,大概都是要用com中IE对象来做的意思吧。这样的话就没办法对所有浏览器都管用了额。所以说C#还是不能获取网页进程中的地址信息,除非用特定的浏览器对象。虽然还没完全达到我的要求,但是学到了点东西,希望和各位继续讨论。
嘿嘿,结贴给分呗
  • 打赏
  • 举报
回复
谢谢几位的指点,大概都是要用com中IE对象来做的意思吧。这样的话就没办法对所有浏览器都管用了额。所以说C#还是不能获取网页进程中的地址信息,除非用特定的浏览器对象。虽然还没完全达到我的要求,但是学到了点东西,希望和各位继续讨论。
飞小猪 2013-12-02
  • 打赏
  • 举报
回复
引用 15 楼 u012999424 的回复:
根据URL得到IE对象: public static void CloseIeByUrl(string url) { SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); foreach (SHDocVw.InternetExplorer ie in shellWindows) { string filename = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); if (filename.ToLower().Equals("iexplore") && ie.LocationURL.ToLower().Contains(url.ToLower())) { ie.Quit(); } } } 需要引用SHDocVw.dll,哪里引用可以度娘 你这样是默认只能用IE了额。。
是的,这个只能获得IE的
  • 打赏
  • 举报
回复
引用 14 楼 xiaozhu39505 的回复:
根据URL得到IE对象: public static void CloseIeByUrl(string url) { SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); foreach (SHDocVw.InternetExplorer ie in shellWindows) { string filename = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); if (filename.ToLower().Equals("iexplore") && ie.LocationURL.ToLower().Contains(url.ToLower())) { ie.Quit(); } } } 需要引用SHDocVw.dll,哪里引用可以度娘
引用 14 楼 xiaozhu39505 的回复:
根据URL得到IE对象: public static void CloseIeByUrl(string url) { SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); foreach (SHDocVw.InternetExplorer ie in shellWindows) { string filename = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); if (filename.ToLower().Equals("iexplore") && ie.LocationURL.ToLower().Contains(url.ToLower())) { ie.Quit(); } } } 需要引用SHDocVw.dll,哪里引用可以度娘
你这样是默认只能用IE了额。。
飞小猪 2013-12-02
  • 打赏
  • 举报
回复
根据URL得到IE对象: public static void CloseIeByUrl(string url) { SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows(); foreach (SHDocVw.InternetExplorer ie in shellWindows) { string filename = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower(); if (filename.ToLower().Equals("iexplore") && ie.LocationURL.ToLower().Contains(url.ToLower())) { ie.Quit(); } } } 需要引用SHDocVw.dll,哪里引用可以度娘
  • 打赏
  • 举报
回复
里面有个Path {get;}属性 上面打错
  • 打赏
  • 举报
回复
引用 10 楼 u012999424 的回复:
[quote=引用 8 楼 dongxinxi 的回复:] 要找窗口

internal const int WM_CLOSE = 0x0010;    //关闭窗口
internal const int WM_QUIT = 0x0012;     //退出线程消息循环

public static void CloseWindow(IntPtr hWnd)
{
    PostMessage(hWnd, WM_CLOSE, 0, 0);
    PostMessage(hWnd, WM_QUIT, 0, 0);
}
不过根据标题判断很不严密,即便那些网页标题都中规中矩都遵循seo那样的规则,也难免误杀
引用 8 楼 dongxinxi 的回复:
要找窗口

internal const int WM_CLOSE = 0x0010;    //关闭窗口
internal const int WM_QUIT = 0x0012;     //退出线程消息循环

public static void CloseWindow(IntPtr hWnd)
{
    PostMessage(hWnd, WM_CLOSE, 0, 0);
    PostMessage(hWnd, WM_QUIT, 0, 0);
}
不过根据标题判断很不严密,即便那些网页标题都中规中矩都遵循seo那样的规则,也难免误杀
你这段代码是关闭单个网页的方法吧?[/quote] 是的,参数是窗口句柄
  • 打赏
  • 举报
回复
IE COM接口 http://pinvoke.net/default.aspx/Interfaces.DWebBrowserEvents2 里面有个Page {get;}属性和OnQuit(0,应该就是它们了,自己查资料吧 .net调用com接口 http://www.cnblogs.com/zhili/archive/2013/01/27/COMInterop.html
  • 打赏
  • 举报
回复
引用 8 楼 dongxinxi 的回复:
要找窗口

internal const int WM_CLOSE = 0x0010;    //关闭窗口
internal const int WM_QUIT = 0x0012;     //退出线程消息循环

public static void CloseWindow(IntPtr hWnd)
{
    PostMessage(hWnd, WM_CLOSE, 0, 0);
    PostMessage(hWnd, WM_QUIT, 0, 0);
}
不过根据标题判断很不严密,即便那些网页标题都中规中矩都遵循seo那样的规则,也难免误杀
引用 8 楼 dongxinxi 的回复:
要找窗口

internal const int WM_CLOSE = 0x0010;    //关闭窗口
internal const int WM_QUIT = 0x0012;     //退出线程消息循环

public static void CloseWindow(IntPtr hWnd)
{
    PostMessage(hWnd, WM_CLOSE, 0, 0);
    PostMessage(hWnd, WM_QUIT, 0, 0);
}
不过根据标题判断很不严密,即便那些网页标题都中规中矩都遵循seo那样的规则,也难免误杀
你这段代码是关闭单个网页的方法吧?
  • 打赏
  • 举报
回复
引用 7 楼 dongxinxi 的回复:
[quote=引用 5 楼 u012999424 的回复:] C#可以获取窗口的标题,也就是可以获取单个网页标题,如果只能这样的话也勉强能实现,但就是不知道为什么很多情况下网页标题都是空字符串。。。
因为有窗口是不可见的或者是托盘图标,可以用API过滤 你得这样判断 if(IsVisiable(hwnd) && 窗口所在PID == 浏览器进程) && 窗口标题 like 待杀窗口) { 关闭(hwnd) } 要取得进程内数据,可以用浏览器提供的com接口 另外单纯通过API也可以实现,类似制作游戏外挂[/quote] 就是说可以获取已打开的网页的地址?怎样可以获取呢?
  • 打赏
  • 举报
回复
要找窗口

internal const int WM_CLOSE = 0x0010;    //关闭窗口
internal const int WM_QUIT = 0x0012;     //退出线程消息循环

public static void CloseWindow(IntPtr hWnd)
{
    PostMessage(hWnd, WM_CLOSE, 0, 0);
    PostMessage(hWnd, WM_QUIT, 0, 0);
}
不过根据标题判断很不严密,即便那些网页标题都中规中矩都遵循seo那样的规则,也难免误杀
  • 打赏
  • 举报
回复
引用 5 楼 u012999424 的回复:
C#可以获取窗口的标题,也就是可以获取单个网页标题,如果只能这样的话也勉强能实现,但就是不知道为什么很多情况下网页标题都是空字符串。。。
因为有窗口是不可见的或者是托盘图标,可以用API过滤 你得这样判断 if(IsVisiable(hwnd) && 窗口所在PID == 浏览器进程) && 窗口标题 like 待杀窗口) { 关闭(hwnd) } 要取得进程内数据,可以用浏览器提供的com接口 另外单纯通过API也可以实现,类似制作游戏外挂
  • 打赏
  • 举报
回复
还有个问题,一个进程多个窗口比如浏览器的情况下,如果kill的话是所有窗口都关闭了,有办法关闭单个网页吗?
  • 打赏
  • 举报
回复
C#可以获取窗口的标题,也就是可以获取单个网页标题,如果只能这样的话也勉强能实现,但就是不知道为什么很多情况下网页标题都是空字符串。。。
  • 打赏
  • 举报
回复
不知道,帮顶,感觉C#搞不定你的需求
  • 打赏
  • 举报
回复
为了有人看到我还是再顶一次吧
  • 打赏
  • 举报
回复
有人不。。。。
  • 打赏
  • 举报
回复
必须顶一下,希望有人看到

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧