首页
学习
活动
专区
工具
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中的短语计数
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2分29秒

基于实时模型强化学习的无人机自主导航

领券