Frage

Ich habe ein bisschen ein Problem.

Bezug zu meinen früheren Fragen zu Slipstream SP3 vs . gepatcht SP3 , haben wir zu dem Schluss gekommen, dass es ein Internet Explorer-Prozess gestartet ist, angewiesen, eine einfache HTML-Datei von der lokalen Festplatte zu laden, die Javascript enthält, die den Rest eines größeren eröffnet Chat / Tagungssystem. Internet Explorer gestartet wird von einem Lotus Notes-Client.

Leider alles, was wir sehen können, ist der IExplore.exe Prozess im Task-Manager, und einige Sekunden später wieder verschwinden Aufspringen.

Wenn wir versuchen, die lokale HTML-Datei zu öffnen, die wir auf der Festplatte gefunden haben, es gibt uns, dass die Informationsleiste an der Spitze, uns zu sagen, dass es aktive Inhalte deaktiviert hat. Dies ist jedoch nicht das eigentliche Problem. Wir haben eine andere Maschine, die die gleichen Einstellungen hat, aber wo alles funktioniert, und das Laden der HTML-Datei gibt uns manuell den gleichen Fehler auch dort.

Aber vielleicht gibt es eine andere Fehlermeldung angezeigt wird, wenn IExplore von Notizen gestartet wird, aber da dieser Prozess soll nur den Rest des Systems kurbeln, und das Fenster ausgeblendet ist, können wir es nicht sehen, das ist die Fehlermeldung / Problem.

So, dachte ich, vielleicht sollte ich versuchen, ein kleines Programm erstellen, die für IExplore.exe wartet zu starten, dann sofort zeigt das Fenster, so dass wir die Fehlermeldung sehen können, oder was auch immer das Problem ist. Wenigstens hoffentlich werden wir in der Lage sein, das zu sehen.

So weit, so gut, außer dass, wenn ich einen Prozess aus meinem eigenen Programm, mit einem versteckten Fenster zu starten, wird das Hauptfenster Griff 0, und somit kann ich das Fenster nicht zeigen, nachdem alle. Ich erwarte, dass dieser Prozess iexplore.exe von Lotus Notes gestartet das gleiche Problem haben.

Mein Überwachungsprogramm ist in C # geschrieben, und im Grunde läuft diese Schleife:

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

Dieses nimmt alle IExplore.exe Prozesse, Fenster oder nicht, und mit IE8, bekomme ich zwei Prozesse für das erste Fenster, wie erwartet. Ich betreibe diese immer und immer wieder, und behandelt die Unterschiede zu den vorherigen Läufen.

Allerdings hat der Prozess kurz einen Fenstergriff 0 am Anfang, also habe ich es so weit:

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

, aber jetzt ist es überhaupt nicht abholen etwas, auch nachdem das Fenster einen Griff bekommen hat (und ja, process.MainWindowHandle hat einen von Null Griff Wert, nachdem das Fenster angezeigt wurde, aber in dem Fall, das Fenster wird niemals angezeigt, es bleibt bei 0).

So ist die Frage: Gibt es für mich eine Möglichkeit, diese versteckten IExplore.exe Prozess zu nehmen, und ihn anweisen, sich zu zeigen, wenn es nicht bereits ein Fenstergriff haben? Ich bezweifle es, aber vielleicht kann mir jemand das Gegenteil beweisen.

Wenn nicht, mein Backup-Plan ist ein Shim IExplore.exe Programm zu erstellen, das leitet alle Befehlszeilenargumente an das Original, außer dass es gibt an, dass das Fenster angezeigt werden soll. Wäre das eine Lösung sein?

War es hilfreich?

Lösung

Ich glaube nicht, dass es eine Möglichkeit ist ein IE-Fenster zu zwingen, die kein Fenstergriff hat einen Fenstergriff für sich selbst (oder verwenden Sie eine zuvor ein zugewiesen) und zeigt selbst zuzuweisen.

In Bezug auf Ihre Backup-Methode: I denkt das funktionieren würde, aber Sie arbeiten dort in gefährlichem Gebiet. Ich würde wirklich empfehlen Ihre Shim Schreiben nur jeden Aufruf von iexplore.exe und alles zu protokollieren, die in es geht, und verwenden, um Ihr Problem zu charakterisieren; nur nach dem Problem mit völlig gutartig Protokollierung gründlich zu charakterisieren würde ich möglicherweise empfehlen, die Parameter zu modifizieren iexplore.exe zu zwingen, ein Fenster anzuzeigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top