我的应用程序触发了具有特定URL的Web浏览器。 我的程序结束后,我想关闭我打开的网页/标签..
通过调用带参数a的EXE文件。流程名称b。 URL中的字符串
详细问题 How to kill firefox child process/tab from Java/C++
我使用C#方法......
我可以找到所有标签的进程ID ..
foreach (Process theprocess in processlist) {
if (theprocess.ProcessName == "iexplore") {
Console.WriteLine("Process: {0}\tID: {1}\tWindow name: {2}",
theprocess.ProcessName, theprocess.Id, theprocess.MainWindowTitle
);
}
}
目前我只能获得进程的Window Title ....而在IE8中只有一个主要进程的窗口标题可见..
如果我有每个选项卡的pid,如何找到选项卡的URL ...并且仅杀死该选项卡?
我得到了这个帮助 Access is denied - when trying to get the url (text) from address bar's handle
使用SHDocVw; 。
foreach(新的ShellWindowsClass()中的InternetExplorer ieInst) Console.WriteLine(ieInst.LocationURL);
答案 0 :(得分:10)
在IE7及更高版本中,下面的代码只会删除其网址中包含匹配字符串的标签。
foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindows())
{
String url = ieInst.LocationURL;
if (url.Contains("google"))
{
ieInst.Quit();
}
}
要关注特定标签,代码为:
foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindows())
{
String url = ieInst.LocationURL;
if (url.Contains("google"))
{
int val = ieInst.HWND;
IntPtr hwnd = new IntPtr(val);
ShowWindow(hwnd, SW_MAXIMISE);
SetForegroundWindow(hwnd);
}
}
答案 1 :(得分:3)
有一种方法可以获取每个IExplorer实例的URL !!
添加引用" Microsoft Internet Controls "到项目。
这段代码是
**foreach (SHDocVw.InternetExplorer ieInst in new SHDocVw.ShellWindowsClass())
{
System.Console.WriteLine(ieInst.LocationURL);
}**
生成exe和Interop.SHDocVw.dll
它会起作用...... :)