我有一点问题。

与我前面约 href="https://serverfault.com/questions/9943/sp3-installed-vs-sp3-slipstreamed-difference-in-default-security-settings">整合安装SP3 VS 。修补SP3 ,我们得出的结论存在被启动的Internet Explorer进程,指示从本地磁盘,其中包含的JavaScript,这带来了较大的休息加载一个简单的HTML文件聊天/会议系统。 Internet Explorer被从一个Lotus Notes客户端启动。

不幸的是,我们可以看到的是iexplore.exe进程在任务管理器中弹出,有些秒钟后,又消失了。

如果我们尝试打开本地.html文件,这是我们已经在磁盘上发现的,它让我们在顶部信息栏,告诉我们,它已禁用活动内容。然而,这并不是真正的问题。我们有一个具有相同的设置,但如果一切正常,并手动加载.html文件存在给了我们同样的错误,以及另一台机器。

不过,也许有当IEXPLORE从笔记开始被显示另一条错误消息,但由于这个过程应该只是kickstart的系统的休息,这个窗口是隐藏的,我们看不到它,那就是,错误消息/问题。

所以,我想,也许我应该尝试创建一个小程序,等待IEXPLORE.EXE启动,然后立即显示窗口,这样我们就可以看到错误信息,或任何问题。至少,希望我们就可以看到这一点。

到目前为止好,但如果我从我自己的程序启动一个进程,一个隐藏的窗口,主窗口句柄为0,因此我不能显示窗口毕竟。我希望这个iexplore.exe进程从Lotus Notes开始有同样的问题。

我的监视程序是用C#,并且基本上运行此循环:

foreach (var process in Process.GetProcesses())
{
    if (process.ProcessName.ToLower() == "iexplore")
        result.Add(process);
}

此拾取所有的IEXPLORE.EXE进程,窗户或没有,和与IE8,我获得2个进程为第一窗口,如所预期。我运行这个一遍又一遍,并处理来自先前运行的差异。

然而,该方法简要地具有在开始窗口句柄0,所以我改成了这样:

foreach (var process in Process.GetProcesses())
{
    if (process.ProcessName.ToLower() == "iexplore" &&
        process.MainWindowHandle != IntPtr.Zero)
    {
        result.Add(process);
    }
}

但现在它不拿起任何东西,窗口已经得到了手柄即使(是的,process.MainWindowHandle确实有一个非零句柄值已经所示的窗口后,但在情况下从未示出的窗口,它停留在0。)

所以,问题是:有没有什么办法让我拿这个隐藏iexplore.exe进程,并指示它脱颖而出,当它没有一个窗口句柄了吗?我对此表示怀疑,但也许有人能证明我错了。

如果不,我的备份计划是创建一个垫片IEXPLORE.EXE程序,即转发所有命令行参数到原来的一个,不同之处在于它指定的窗口被显示。这将是一个解决方案?

有帮助吗?

解决方案

我不相信有任何办法迫使其不具有窗口句柄分配一个窗口句柄本身IE窗口(或使用先前分配的一个),并显示自身。

至于你的备份方法:我的认为的这会工作,但你在危险地带在那里工作。其实我建议写你垫片刚刚登录的IEXPLORE.EXE每次调用并进入它的一切,并用它来描述你的问题。只有后完全良性的记录彻底表征您的问题我会建议有可能修改参数,以迫使IEXPLORE.EXE显示一个窗口。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top