【发布时间】:2019-11-01 11:36:58
【问题描述】:
我有一个键盘钩子实现,可以在给定条件下更改某些文本的输出。要确定如何格式化输出,我需要能够查看哪个窗口处于焦点位置,如果 Internet Explorer 处于焦点位置,我需要能够确定在该特定选项卡上打开了哪个 URL。
我一直在使用 Simon 在以下帖子中发布的代码: Retrieve current URL from C# windows forms application
Process[] localByName = Process.GetProcessesByName("iexplore");
if((Keys)vkCode == Keys.LShiftKey)
{
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
foreach (Process process in Process.GetProcessesByName("iexplore"))
{
string url = GetInternetExplorerUrl(process);
if (url == null)
continue;
Console.WriteLine("IE Url for '" + process.MainWindowTitle + "' is " + url);
}
由于我正在运行 Internet Explorer(并为此打开网页),我希望/期待看到带有 URL 的某种输出,显示 URL 已打开。我没有将 URL 写入控制台,而是一无所获。在我尝试使用GetProcessesByName 的情况下,我只得到以下输出,System.Diagnostics.Process[]
【问题讨论】:
-
不要引用我的话,但我似乎记得从外部程序读取 url 被故意阻止。即使在表单中嵌入 active-x 控件时,也很难做到。
-
使用哪个 IE 版本?如果我在我的 IE 版本 (11) 上使用 Inspect 检查 IE 层次结构,我发现这段代码是错误的...
-
所有需要检测的URL暂时都在IE11中。
标签: c# webautomation