如何使用每个选项卡的PID获取Internet Explorer选项卡的URL?

Sha*_* Md 6 c# internet-explorer

我的应用程序触发了具有特定URL的Web浏览器.我的程序结束后,我想关闭我打开的网页/标签..

通过调用带参数a的EXE文件.流程名称b.URL中存在的字符串

详细问题 如何从Java/C++中杀死firefox子进程/选项卡

我用C#方法......

我能够找到所有选项卡的进程ID ..

foreach (Process theprocess in processlist) {
    if (theprocess.ProcessName == "iexplore") {
        Console.WriteLine("Process: {0}\tID: {1}\tWindow name: {2}",
            theprocess.ProcessName, theprocess.Id, theprocess.MainWindowTitle
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

目前我只能获得进程的Window Title ....而在IE8中只有一个主进程的窗口标题可见..

如果我有每个选项卡的pid,如何找到选项卡的URL ...并仅杀死该选项卡?

当我试图从地址栏的句柄获取url(文本)时,我得到了Access的拒绝帮助

使用SHDocVw; ..

foreach(InternetExplorer ieInst in new ShellWindowsClass())Console.WriteLine(ieInst.LocationURL);

Sha*_* Md 10

在IE7及更高版本中,下面的代码将仅删除其URL中具有匹配字符串的选项卡.

   foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindows())
   {
        String url = ieInst.LocationURL;
        if (url.Contains("google"))
        {
            ieInst.Quit();
        }
   }
Run Code Online (Sandbox Code Playgroud)

要聚焦特定选项卡,代码为:

   foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindows())
   {
        String url = ieInst.LocationURL;
        if (url.Contains("google"))
        {
            int val = ieInst.HWND;
            IntPtr hwnd = new IntPtr(val);
            ShowWindow(hwnd, SW_MAXIMISE);
            SetForegroundWindow(hwnd);
        }
   }
Run Code Online (Sandbox Code Playgroud)

  • Coz evryon看了它,没有身体回应:)直到我自己找到了解决方案并且也分享了:P (2认同)
  • 使用此代码将引发两个错误.应该使用"ShellWindows()"而不是"ShellWindowsClass()". (2认同)