,因此对现有代码进行了改进。现在,它打开了IE窗口以导航到某些站点
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = Configuration.IExplorerLocation();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = url;
// Start the process with the info we specified.
Process exeProcess = Process.Start(startInfo);
因此,现在客户端希望我们在尝试单击UI中的同一导航按钮时关闭该窗口。所以我需要握住一些东西,如果他们再次尝试,稍后再关闭。我已经保存了句柄,进程ID等,试图稍后再关闭,但是似乎不知道该窗口是否存在。我认为我的问题的一部分可能是IE有点有一个主PID,任何新窗口都获得了新的PID,但是我保存了我创建的PID,50毫秒后它不知道要关闭它的存在。使用此代码
log.Info(fn + "parse -" + _iNypIEProcessIdName);
string[] ProcData = _iNypIEProcessIdName.Split('-');
int ProcId = 0;
log.Info(fn + " "+ ProcData[0]);
Int32.TryParse(ProcData[0], out ProcId);
//Process exeProcess as new Process;
Process CheckProcess = null;
log.Info(fn + "2");
try
{
CheckProcess = Process.GetProcessById(ProcId);
}
catch (Exception e)
{
log.Error(fn + " iNYP process not found to remove ", e);
}
if (CheckProcess.ProcessName == ProcData[1])
{
// then I think we have a match ??
log.Debug(fn + " Attempting to close ID" + ProcId + " " + ProcData[1]);
CheckProcess.Close();
}
所以不确定是否只是我的代码是错误的...但是我想我正在寻找一种打开进程的好方法...获取有关此进程的一些信息,如果他们尝试,以后可以用来关闭它导航到几乎相同的URL。我是否应该循环浏览所有现有的IE窗口并找到相同的URL并关闭?我只是想尝试获取句柄,否则PID会更干净..并在进程启动后尝试获取句柄时注意,窗口未完全打开,句柄为零..因此,欢迎您提出任何建议! !