前提:手工打开2,3个页面,如何让程序打开一个网页,然后关掉自己打开的那个页面?手工打开的页面不关。
以下是我写的代码,不起作用。
1 using System; 2 using System.Diagnostics; 3 using System.Threading; 4 5 namespace Process_Sample 6 { 7 class MyProcessClass 8 { 9 public static void Main() 10 { 11 Process pr = Process.Start("IExplore.exe"); 12 int pid = pr.Id; 13 Console.WriteLine("代码创建:" + pid.ToString()); 14 Thread.Sleep(3000); 15 Process[] pp = Process.GetProcessesByName("iexplore"); 16 for (int i = 0; i < pp.Length; i++) 17 { 18 Console.WriteLine("手工打开:" + pp[i].Id); 19 if (pp[i].Id == pid) 20 { 21 pr.Kill(); 22 } 23 } 24 Console.ReadKey(); 25 } 26 } 27 }
首先。如果用户选择的是新标签页中打开。如果采用关闭进程的方式。那么。整个进程都会关闭。所以。不建议使用启动IExplore.exe 。可以自己简单的浏览器。winform中有这个控件。这样就能控制浏览器的地址。就能采用地址来关闭当前浏览器窗口了。《个人思路》
我要的是不用控件,不用第三方,比如WebDriver,就纯粹用C#,不知有办法没?
不知道怎么弄的,如果开始没有打开的"iexplore",还能关闭页面,如果已经有的“iexplore”,用 string pname = pr.ProcessName;得 时候,发现进程已经关闭了。以后也获得不到该进程。即便是ProcessStartInfo processinfo = new ProcessStartInfo("IExplore.exe", "http://www.baidu.com/s?wd=%E9%BB%84%E9%87%91&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&rsv_sug3=1&rsv_sug=0&rsv_sug1=1&rsv_sug4=141&inputT=10406&my=my");
Process[] pp = Process.GetProcessesByName("iexplore");
pp[0].StartInfo = processinfo;
pp[0].Start();
string pname = pp[0].ProcessName;
方式打开的网页,进程也会在Start后关闭的。