Csharp/C#教程:访问被拒绝 – 尝试从地址栏的句柄获取URL(文本)时分享


访问被拒绝 – 尝试从地址栏的句柄获取URL(文本)时

我正在尝试从IE的地址栏中提取URL。 (使用以下C#代码在Windows 7上的IE 8)。

static string GetUrlFromIE() { IntPtr windowHandle = APIFuncs.getForegroundWindow(); IntPtr childHandle; String strUrlToReturn = ""; //try to get a handle to IE's toolbar container childHandle = APIFuncs.FindWindowEx(windowHandle, IntPtr.Zero, "WorkerW", IntPtr.Zero); if (childHandle != IntPtr.Zero) { //get a handle to address bar childHandle = APIFuncs.FindWindowEx(childHandle, IntPtr.Zero, "ReBarWindow32", IntPtr.Zero); if (childHandle != IntPtr.Zero) { childHandle = APIFuncs.FindWindowEx(childHandle, IntPtr.Zero, "Address Band Root", IntPtr.Zero); if (childHandle != IntPtr.Zero) { childHandle = APIFuncs.FindWindowEx(childHandle, IntPtr.Zero, "Edit", IntPtr.Zero); if (childHandle != IntPtr.Zero) { strUrlToReturn = new string((char)0, 256); GetWindowText(hwnd, strUrlToReturn , strUrlToReturn.Length); } } } } return strUrlToReturn; } 

GetWindowText调用返回“访问被拒绝”exception。 在使用管理员权限运行应用程序时,它会抛出“系统无法找到指定的文件”。

有任何想法吗?

GetWindowText()无法在另一个进程中检索控件的文本,而应使用带有WM_GETTEXTLENGTH / WM_GETTEXT SendMessage()

编辑; 版本无关的方式:

(将引用添加到c: WINDOWS system32 shdocvw.dll)

上述就是C#学习教程:访问被拒绝 – 尝试从地址栏的句柄获取URL(文本)时分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

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

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/951083.html

(0)
上一篇 2021年11月18日
下一篇 2021年11月18日

精彩推荐