Discussion:
Programmatically Read All URL's in All Tabs in a Browser?
(too old to reply)
Wes Williams
2008-01-31 19:32:00 UTC
Permalink
How can I approach capturing all the open URL's in all tabs in my open browser?

I wrote C# code to capture all of the IE processes but I cannot get into the
browser object model from there. How do I get into the object model and get
the URL in the address bar in all tabs?

Process[] myProcesses = Process.GetProcesses();
foreach (Process myProcess in myProcesses)
{
if (myProcess.ProcessName.Equals("IExplore",
StringComparison.CurrentCultureIgnoreCase))
Console.Write(myProcess.ProcessName);
}
--
Thanks,
Wes
Wes Williams
2008-01-31 21:40:00 UTC
Permalink
Okay everyone. Did lot's of digging to get this one and the Google references
to code are not helpful. Bookmark this one. Here's the code to do it:

using SHDocVw;
using mshtml;

...
listProcesses.Items.Clear();

ShellWindows SW = new ShellWindowsClass();
string processName;
HTMLDocumentClass htmlDoc;

foreach (InternetExplorer IE in SW)
{
processName =
System.IO.Path.GetFileNameWithoutExtension(IE.FullName).ToLower();
if (processName.Equals("iexplore"))
{
try
{
htmlDoc = (HTMLDocumentClass)IE.Document;

listProcesses.Items.Add(htmlDoc.IHTMLDocument2_nameProp + " - " +
htmlDoc.IHTMLDocument2_url);
}
// when the browser does not hold an html doc
catch (InvalidCastException ex)
{
}
}
}
--
Wes Williams
Post by Wes Williams
How can I approach capturing all the open URL's in all tabs in my open browser?
I wrote C# code to capture all of the IE processes but I cannot get into the
browser object model from there. How do I get into the object model and get
the URL in the address bar in all tabs?
Process[] myProcesses = Process.GetProcesses();
foreach (Process myProcess in myProcesses)
{
if (myProcess.ProcessName.Equals("IExplore",
StringComparison.CurrentCultureIgnoreCase))
Console.Write(myProcess.ProcessName);
}
--
Thanks,
Wes
Loading...