Question

Je suis un peu un problème.

associés à mes questions précédentes sur slipstreamed SP3 vs . patché SP3 , nous sommes venus à la conclusion qu'il ya un processus Internet Explorer en cours de démarrage, chargé de charger un simple fichier .html à partir du disque local, qui contient javascript, qui ouvre le reste d'une plus grande chat / système réunion. Internet Explorer est démarré à partir d'un client Lotus Notes.

Malheureusement, tout ce que nous pouvons voir est le processus IExplore.exe apparaître dans le Gestionnaire des tâches, et quelques secondes plus tard, de nouveau disparaître.

Si nous essayons d'ouvrir le fichier .html local, que nous avons trouvé sur le disque, il nous donne cette barre d'information en haut, en nous disant qu'il a désactivé le contenu actif. Ceci, cependant, est pas le vrai problème. Nous avons une autre machine qui a les mêmes paramètres, mais où tout fonctionne, et le chargement du fichier .html nous donne manuellement la même erreur là aussi.

Cependant, peut-être il y a un autre message d'erreur affiché lorsque IExplore est démarré à partir de notes, mais étant donné que ce processus est censé juste relancer le reste du système, et cette fenêtre est cachée, on ne peut le voir, c'est , le message d'erreur / problème.

Alors, je pensais que, peut-être que je devrais essayer de créer un petit programme qui attend IExplore.exe pour commencer, puis montre immédiatement la fenêtre, afin que nous puissions voir le message d'erreur, ou quel que soit le problème. Au moins, nous espérons que nous serons en mesure de voir.

Jusqu'à présent, si bon, sauf que si je commence un processus de mon propre programme, avec une fenêtre cachée, la poignée de la fenêtre principale est 0, et donc je ne peux pas montrer la fenêtre après tout. Je pense ce processus IExplore.exe a commencé de Lotus Notes à la même question.

Mon programme de surveillance est écrit en C #, et fonctionne essentiellement cette boucle:

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

prend tous les processus iexplore.exe, fenêtres ou non, et avec IE8, je reçois 2 processus de la première fenêtre, comme prévu. Je lance encore et encore, et gère les différences par rapport aux séries précédentes.

Cependant, le processus a brièvement une poignée de fenêtre 0 au début, donc je l'ai changé à ceci:

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

mais maintenant il ne capte pas quoi que ce soit, même après que la fenêtre a obtenu une poignée (et oui, process.MainWindowHandle a une valeur de poignée non nulle après la fenêtre a été montré, mais dans le cas où la fenêtre est jamais montré, il reste à 0).

Alors, la question est: Est-il possible pour moi de prendre ce processus IExplore.exe caché, et lui demander de se montrer, quand il ne dispose pas d'une poignée de fenêtre déjà? Je doute, mais peut-être que quelqu'un peut me prouver le contraire.

Dans le cas contraire, mon plan de sauvegarde est de créer un programme iexplore.exe Shim, qui transmet tous les arguments de ligne de commande à l'original, sauf qu'il précise que la fenêtre doit être affichée. Serait-ce une solution?

Était-ce utile?

La solution

Je ne pense pas qu'il y ait un moyen de forcer une fenêtre IE qui ne dispose pas d'une poignée de fenêtre pour allouer une poignée de fenêtre pour lui-même (ou utiliser un allouée précédemment une) et afficher lui-même.

En ce qui concerne votre méthode de sauvegarde: I pense cela fonctionnerait, mais vous travaillez dans un territoire dangereux là-bas. Je vous recommande vraiment écrire votre Caler connectez-vous chaque appel iexplore.exe et tout ce qui se passe en elle, et l'utiliser pour caractériser votre problème; seulement après la caractérisation en profondeur votre problème avec l'exploitation forestière complètement bénin que je suggère peut-être modifier les paramètres pour forcer iexplore.exe pour afficher une fenêtre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top