AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi sporadische EOleException Fehler in quasi nonvcl

sporadische EOleException Fehler in quasi nonvcl

Ein Thema von jus · begonnen am 25. Jun 2018
Antwort Antwort
jus

Registriert seit: 22. Jan 2005
248 Beiträge
 
Delphi 2007 Professional
 
#1

sporadische EOleException Fehler in quasi nonvcl

  Alt 25. Jun 2018, 14:48
Hallo,

ich habe mir vor einiger Zeit ein kleines Programm gebastelt, dass auf Klick einen Verzeichniswechel beim Windows Explorer erzwingt. Dazu frage ich im Programm ab, ob ein Verzeichnis Parameter mitgegben wurde oder nicht. Wenn ja wird umgehend die Verzeichniswechselroutine für Windows Explorer ausgeführt, sonst kommt stattdessen eine GUI.
Leider funktioniert die Routine nach einiger Zeit auf manchen Rechner nicht mehr. Es kommt dann folgende Fehlermeldung:
Code:
---------------------------
Anwendungsfehler
---------------------------
Exception Exception EOleExceptionException EOleExceptionException EOleException in Modul Project1.exe bei 000887CE.
Unbekannter Fehler.
---------------------------
OK  
---------------------------
Wenn ich den Rechner neustarte, dann funktioniert das wieder, bis nach paar Stunden es wieder nicht mehr geht.

Ich habe das komplette Testprojekt angehängt. Anbei der wichtigste Part:
Delphi-Quellcode:
program Project1;

uses
  Forms,
  Windows,
  SysUtils,
  SHDocVw,
  ActiveX,
  Unit1 in 'Unit1.pas{Form1};

{$R *.res}

procedure SwitchExplorerDirectory;
var
  ShellWindows: IShellWindows;
  i: Integer;
  ClName: array[0..64]of Char;
  Pfad: AnsiString;
  wnd: hwnd;
  WndIface: IDispatch;
  WebBrowserApp: IWebBrowserApp;

begin
  ShellWindows := CoShellWindows.Create;
  if ShellWindows = nil then
  begin
    OutputDebugString(PChar('Fehler: "ShellWin = nil"'));
    exit;
  end;

  for i := 0 to ShellWindows.Count-1 do
  begin
    OutputDebugString(PChar(IntToStr(i)));
    WndIface := ShellWindows.Item(i);
    if Assigned(WndIface) then
    begin
      if Succeeded(WndIface.QueryInterface(IID_IWebBrowserApp, WebBrowserApp)) then
      begin
        OutputDebugString(PChar('WebBrowserApp.hwnd('+IntToStr(WebBrowserApp.hwnd)+')')); // <------HIER kommt der Fehler!!!!
      end
      else OutputDebugString(PChar(IntToStr(i)+': has no IID_IWebBrowserApp interface!'));
    end
    else OutputDebugString(PChar(IntToStr(i)+': "WndIface" not assigned!'));
  end;
end;

begin
 if ParamCount>0 then
  begin
    if not (SUCCEEDED(CoInitializeEx(NIL, COINIT_APARTMENTTHREADED or COINIT_DISABLE_OLE1DDE))) then
    begin
      OutputDebugString(PChar('Fehler: "CoInitializeEx" konnte nicht initialisiert werden!'));
      halt;
    end;

    SwitchExplorerDirectory;

    CoUninitialize;
  end
  else
  begin
    Application.Initialize;
    Application.MainFormOnTaskbar := True;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.
Genaugenommen wird ein Exception ausgelöst, wenn man das Handle vom Explorer Fenster (WebBrowserApp.hwnd) abfragen möchte.

Ich bin irgendwie am Verzweifeln, warum es nach einiger Zeit nicht mehr funktioniert. Hat jemand so Idee woran es liegen könnte?

lg,
jus
Angehängte Dateien
Dateityp: zip test.zip (254,4 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf