C#关闭,即基于已知进程ID的标签

时间:2018-09-12 22:17:04

标签: c# process hwnd

,因此对现有代码进行了改进。现在,它打开了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会更干净..并在进程启动后尝试获取句柄时注意,窗口未完全打开,句柄为零..因此,欢迎您提出任何建议! !

0 个答案:

没有答案