当前位置:编程学习 > C#/ASP.NET >>

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

我知道可以用Process打开指定网址的网页,但是怎么关闭指定网址的网页啊。好像获取了所有进程之后没办法得到网址信息,因为获取到的进程很多都不是网页。所以想请问一下,有办法在获取所有进城之后,搜索到我指定的网址的那个网页,然后Kill掉呢? --------------------编程问答-------------------- 必须顶一下,希望有人看到 --------------------编程问答-------------------- 有人不。。。。 --------------------编程问答-------------------- 为了有人看到我还是再顶一次吧 --------------------编程问答-------------------- 不知道,帮顶,感觉C#搞不定你的需求 --------------------编程问答-------------------- C#可以获取窗口的标题,也就是可以获取单个网页标题,如果只能这样的话也勉强能实现,但就是不知道为什么很多情况下网页标题都是空字符串。。。 --------------------编程问答-------------------- 还有个问题,一个进程多个窗口比如浏览器的情况下,如果kill的话是所有窗口都关闭了,有办法关闭单个网页吗? --------------------编程问答--------------------
引用 5 楼 u012999424 的回复:
C#可以获取窗口的标题,也就是可以获取单个网页标题,如果只能这样的话也勉强能实现,但就是不知道为什么很多情况下网页标题都是空字符串。。。

因为有窗口是不可见的或者是托盘图标,可以用API过滤
你得这样判断
if(IsVisiable(hwnd) && 窗口所在PID == 浏览器进程) && 窗口标题 like 待杀窗口) 
{
    关闭(hwnd)
}
要取得进程内数据,可以用浏览器提供的com接口
另外单纯通过API也可以实现,类似制作游戏外挂 --------------------编程问答-------------------- 要找窗口

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也可以实现,类似制作游戏外挂

就是说可以获取已打开的网页的地址?怎样可以获取呢? --------------------编程问答--------------------
引用 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那样的规则,也难免误杀

你这段代码是关闭单个网页的方法吧? --------------------编程问答-------------------- 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 --------------------编程问答--------------------
引用 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那样的规则,也难免误杀

你这段代码是关闭单个网页的方法吧?

是的,参数是窗口句柄 --------------------编程问答-------------------- 里面有个Path {get;}属性 上面打错 --------------------编程问答-------------------- 根据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,哪里引用可以度娘


引用 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了额。。 --------------------编程问答--------------------
引用 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的 --------------------编程问答-------------------- 谢谢几位的指点,大概都是要用com中IE对象来做的意思吧。这样的话就没办法对所有浏览器都管用了额。所以说C#还是不能获取网页进程中的地址信息,除非用特定的浏览器对象。虽然还没完全达到我的要求,但是学到了点东西,希望和各位继续讨论。 --------------------编程问答--------------------
引用 17 楼 u012999424 的回复:
谢谢几位的指点,大概都是要用com中IE对象来做的意思吧。这样的话就没办法对所有浏览器都管用了额。所以说C#还是不能获取网页进程中的地址信息,除非用特定的浏览器对象。虽然还没完全达到我的要求,但是学到了点东西,希望和各位继续讨论。


嘿嘿,结贴给分呗
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,