首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用C#given hwnd获取Chrome,Firefox和IE中的当前URL

使用C#获取Chrome、Firefox和IE中的当前URL,可以通过以下方式实现:

  1. 获取Chrome中的当前URL:
    • 首先,需要引用System.DiagnosticsSystem.Runtime.InteropServices命名空间。
    • 使用Process.GetProcessesByName方法获取所有Chrome进程的进程对象数组。
    • 遍历进程对象数组,使用Process.MainWindowHandle属性获取Chrome窗口的句柄。
    • 使用GetWindowText函数和StringBuilder类获取Chrome窗口的标题。
    • 通过解析标题字符串,可以获取到当前URL。

示例代码:

代码语言:csharp
复制

using System.Diagnostics;

using System.Runtime.InteropServices;

using System.Text;

// 获取Chrome中的当前URL

public string GetChromeCurrentURL()

{

代码语言:txt
复制
   Process[] chromeProcesses = Process.GetProcessesByName("chrome");
代码语言:txt
复制
   foreach (Process process in chromeProcesses)
代码语言:txt
复制
   {
代码语言:txt
复制
       IntPtr handle = process.MainWindowHandle;
代码语言:txt
复制
       StringBuilder title = new StringBuilder(256);
代码语言:txt
复制
       GetWindowText(handle, title, title.Capacity);
代码语言:txt
复制
       string titleString = title.ToString();
代码语言:txt
复制
       if (titleString != "")
代码语言:txt
复制
       {
代码语言:txt
复制
           // 解析标题字符串,获取URL
代码语言:txt
复制
           // 示例代码省略
代码语言:txt
复制
           return currentURL;
代码语言:txt
复制
       }
代码语言:txt
复制
   }
代码语言:txt
复制
   return null;

}

// 调用Windows API函数获取窗口标题

DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)

private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);

代码语言:txt
复制
  1. 获取Firefox中的当前URL:
    • 首先,需要引用System.IOMicrosoft.Win32命名空间。
    • 使用RegistryKey类读取Firefox的安装路径。
    • 使用Process.Start方法启动Firefox,并通过命令行参数-osint -url "%u"打开一个新标签页。
    • 使用Process.WaitForInputIdle方法等待Firefox进程就绪。
    • 使用SendKeys类发送快捷键Ctrl+LCtrl+C,将当前URL复制到剪贴板。
    • 使用Clipboard类获取剪贴板中的文本,即为当前URL。

示例代码:

代码语言:csharp
复制

using System.IO;

using Microsoft.Win32;

using System.Diagnostics;

using System.Windows.Forms;

// 获取Firefox中的当前URL

public string GetFirefoxCurrentURL()

{

代码语言:txt
复制
   string firefoxPath = GetFirefoxInstallationPath();
代码语言:txt
复制
   if (firefoxPath != null)
代码语言:txt
复制
   {
代码语言:txt
复制
       Process process = new Process();
代码语言:txt
复制
       process.StartInfo.FileName = firefoxPath;
代码语言:txt
复制
       process.StartInfo.Arguments = "-osint -url \"%u\"";
代码语言:txt
复制
       process.Start();
代码语言:txt
复制
       process.WaitForInputIdle();
代码语言:txt
复制
       SendKeys.SendWait("^l");
代码语言:txt
复制
       SendKeys.SendWait("^c");
代码语言:txt
复制
       process.WaitForExit();
代码语言:txt
复制
       string currentURL = Clipboard.GetText();
代码语言:txt
复制
       return currentURL;
代码语言:txt
复制
   }
代码语言:txt
复制
   return null;

}

// 获取Firefox的安装路径

private string GetFirefoxInstallationPath()

{

代码语言:txt
复制
   string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
代码语言:txt
复制
   using (RegistryKey key = Registry.LocalMachine.OpenSubKey(uninstallKey))
代码语言:txt
复制
   {
代码语言:txt
复制
       foreach (string subKeyName in key.GetSubKeyNames())
代码语言:txt
复制
       {
代码语言:txt
复制
           using (RegistryKey subKey = key.OpenSubKey(subKeyName))
代码语言:txt
复制
           {
代码语言:txt
复制
               string displayName = subKey.GetValue("DisplayName") as string;
代码语言:txt
复制
               if (displayName != null && displayName.Contains("Firefox"))
代码语言:txt
复制
               {
代码语言:txt
复制
                   string installLocation = subKey.GetValue("InstallLocation") as string;
代码语言:txt
复制
                   if (installLocation != null)
代码语言:txt
复制
                   {
代码语言:txt
复制
                       string firefoxPath = Path.Combine(installLocation, "firefox.exe");
代码语言:txt
复制
                       if (File.Exists(firefoxPath))
代码语言:txt
复制
                       {
代码语言:txt
复制
                           return firefoxPath;
代码语言:txt
复制
                       }
代码语言:txt
复制
                   }
代码语言:txt
复制
               }
代码语言:txt
复制
           }
代码语言:txt
复制
       }
代码语言:txt
复制
   }
代码语言:txt
复制
   return null;

}

代码语言:txt
复制
  1. 获取IE中的当前URL:
    • 首先,需要引用System.Runtime.InteropServices命名空间。
    • 使用SHDocVw.ShellWindows类获取所有正在运行的IE窗口对象。
    • 遍历IE窗口对象,使用InternetExplorer接口的HWND属性获取IE窗口的句柄。
    • 使用GetWindowText函数和StringBuilder类获取IE窗口的标题。
    • 通过解析标题字符串,可以获取到当前URL。

示例代码:

代码语言:csharp
复制

using System.Runtime.InteropServices;

using System.Text;

// 获取IE中的当前URL

public string GetIECurrentURL()

{

代码语言:txt
复制
   ShellWindows shellWindows = new ShellWindows();
代码语言:txt
复制
   foreach (InternetExplorer window in shellWindows)
代码语言:txt
复制
   {
代码语言:txt
复制
       IntPtr handle = (IntPtr)window.HWND;
代码语言:txt
复制
       StringBuilder title = new StringBuilder(256);
代码语言:txt
复制
       GetWindowText(handle, title, title.Capacity);
代码语言:txt
复制
       string titleString = title.ToString();
代码语言:txt
复制
       if (titleString != "")
代码语言:txt
复制
       {
代码语言:txt
复制
           // 解析标题字符串,获取URL
代码语言:txt
复制
           // 示例代码省略
代码语言:txt
复制
           return currentURL;
代码语言:txt
复制
       }
代码语言:txt
复制
   }
代码语言:txt
复制
   return null;

}

// 调用Windows API函数获取窗口标题

DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)

private static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);

代码语言:txt
复制

以上是使用C#获取Chrome、Firefox和IE中的当前URL的方法。请注意,由于浏览器的版本和配置可能会有所不同,以上代码可能需要根据实际情况进行适当的调整和优化。

相关搜索:在IE和Chrome上使用javascript打开当前窗口中带参数的url失败如何在Chrome/IE和Firefox中修复Joomla站点的编号位置问题IE中的ContextMenu,以获取当前打开的浏览器url在Chrome和Firefox中的导航栏样式可以,但在IE中我有问题表格单元格和边框在IE/Chrome和Firefox/Opera中的显示方式不同在IE、Chrome和safari的Firefox..Works中输入不提交数据的密钥在Chrome和Firefox中可以预先添加/追加,但不能在IE11和Edge中使用类定义在IE中崩溃,但在Firefox、Chrome和Opera中有效。IE的类定义中是否有任何错误?使用C++ MFC,获取添加到浏览器(Chrome、IE或Firefox)的扩展列表使用jQuery在Chrome和IE中设置body元素的onbeforeunload使用css重置元素在Chrome和Firefox中的不同位置在不使用selenium和chrome的URL中嵌入凭据"onpopstate“事件的解决方案,该事件在chrome中不起作用,但在IE和FireFox中工作正常Vuejs -如何使用axios获取api的url中的当前id在android WebView中页面加载完成后如何获取和使用当前的url我应该使用什么 CSS 来为 Firefox 和 IE 中的选项标签设置边框?从数据库中检索到的ASP.net图像不会在Chrome和Firefox中显示,但IE和Edge除外IE和chrome中的对齐方式不同(使用多个<div>将居中和水平对齐)无法在IE中加载CSV数据,但使用D3在我的SharePoint站点中加载了Chrome、Firefox和Edge使用python和bs4获取url中的短语计数
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • IE、FireFox、Chrome浏览器中关于URL传参中文乱码,解决兼容性问题!

    前台用url传值中文,后台用request.getParameter接收参数。在Firefox,Chrome等浏览器中没有问题。但用IE浏览器就又会出现参数中文乱码现象。 IE、Firefox、Chrome浏览器对URL的处理各不相同,浏览器在传输URl时得对URL进行编码,IE默认是以UTF-8来传输 的,Firefox肯定不是以UTF-8来编码,有可能是以ISO-8859-1来编码的,而Chrome好像是采用的GBK来编码。 如果不对中文参数进行处理,那么中文字符经各个浏览器以自己的编码方式传输到服务器后就出现了各种编码方式,而服务器却只能以一种编码方式来对接收到的URL进行解码。这样的话和服务器使用的编码方式一样的浏览器在使用带中文的URl时不会出现问题,其他的浏览器则会出现问题。

    02
    领券