![]() |
Exception EOleSysError: CoInitialize wurde nicht aufgerufen.
^^ die kommt z.B. wenn ich den Desktop Hintergrund ändern will (incl. Active Desktop)
Delphi-Quellcode:
Stelle im Source markiert ... // hier ;)
procedure ChangeWallpaper(aFile: String);
const CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}'; var hObj: IUnknown; ADesktop: IActiveDesktop; wstr: PWideChar; begin hObj := CreateComObject(CLSID_ActiveDesktop); // hier gibt's die Exception ADesktop := hObj as IActiveDesktop; wstr := AllocMem(MAX_PATH); try StringToWideChar(aFile, wstr, MAX_PATH); ADesktop.SetWallpaper(wstr, 0); ADesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE); finally FreeMem(wstr); end; SystemParametersInfo(SPI_SETDESKWALLPAPER,0,pointer(aFile), SPIF_SENDWININICHANGE); end; Die erscheint aber nur, weil ich keine Formulare benutze? , da ich das ganze direkt in die dpr packe um das prog klein zu halten (75K).... da gleiche problem hatte ich bei einer eigenen CPL (Systemsteuerung) und da hatte ich Formulare (ohne wäre auch ziemlich sinnlos *gg*) allerdings bei der TShellLink-Komponente... Hat zufällig jemand eine Lösung für mich? ich find das ganze nämlich ziemlich "bescheiden" :roll: |
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Wenn du das liest:
Zitat:
|
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Luckie mein Lieber ;) das würde ich ja gerne tun, wenn ich nur wüsste zu welchem Objekt diese funktion gehört ??
denn z.B. in der Standalone-Version von meinem StartUp-Manager taucht das Problem beim Verknüpfung auslesen nicht auf... nur in der Cpl-Version [edit] btw. ich finde diese funktion bei keinem einzigen Objekt... lediglich so: Zitat:
[/edit] |
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Hallo,
hier ist die CoInitialize Funktion aus dem Windows API gemeint. CoUnInitialize nicht vergessen !!! und in der Win32-Referenz nachschauen. Oder dort: ![]() |
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Zitat:
@The-X: Was machst du, wenn der Active Desktop nicht aktiv ist? ![]() ![]() |
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Liste der Anhänge anzeigen (Anzahl: 1)
matthias? was denkst du denn, woher ich diesen Code (zum teil jedenfalls) her habe ???
desweiteren geht es mir mehr um diese exception als um das ändern des Hintergrundes an sich ;) ich häng gleich mal das ganze gezippt an... dann könnt ihr ja selber mal guggn, weil ich werd daraus nicht schlau... wenn ich die Procedure über eine Form aufrufe funktioniert's einwandfrei, aber wenn ich diese Procedure in einem Programm ohne Formulare einfach in eine .dpr kopiere, compiliere und dann aufrufe kommt in der ersten Code-Zeile (wie markiert) diese verdammte Exception :wall: und was den Active-Desktop angeht... ohne ihn funktioniert's ja. erst nachdem ich den Source zum ändern vom AD mit reingetan hab kam die Exception |
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Zitat:
Zitat:
Zitat:
|
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Hat sich erledigt :wall:
Unit ActiveX eingebunden, CoInitialize(nil); am Anfang, und CoUnInitialize; am Ende der Procedure aufgerufen :roll: und schwupps ;) war die exception weg :shock: [OT] k.a. warum aber ich komme zu der Folgerung, das Unit Forms auch Unit ActiveX benutzt? weil sonst ist kein Unterschied festzustellen ? [/OT} |
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Nur mal so: Das Problem tritt bspw. auch auf, wenn man den MS-XML-Parser in einer Konsolen- oder nonVCL-Anwendung benutzen will. Bei der VCL gibt es garantiert eine der eingebundenen Units, die ihrerseits "CoInitialize" aufruft. Ansonsten muss man es selbst machen. Ich habe es mir inzwischen angewöhnt, es auch in VCL-Apps grundsätzlich selbst aufzurufen:
Delphi-Quellcode:
und damit bin ich bisher recht gut gefahren.
unit Form1;
{ ... } initialization CoInitialize(nil); finalization CoUninitialize; end. |
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Mit XML Hat ich bisher noch nix am Hut ;) :angle2: aber ich denke mal das sich das Problem bei meinem Start-Up Manager auch so lösen lässt wobei ich hier auch nur eine alternative dpr-Datei verwende um das Cpl-(Dll-)Format wegen der Parameter und so einzuhalten ;)
|
Re: Exception EOleSysError: CoInitialize wurde nicht aufgeru
Auch wenn Ihr das vielleicht nicht so gerne seht, wenn irgendwelche "Ur-Alt-Threads" wieder hochgeholt werden, aber ich hätte dennoch eine Frage dazu.
Und wozu sollte ich einen neuen Thread eröffnen, wenn meine Frage hervorragend in diesen 3-Jahre alten Thread passt ? Folgendes Problem : Ich habe eine non-VCL-Anwendung, von der aus ich nun auf Access-Datenbanken und ggf. auch auf XML-Dateien zugreifen muss. Zuerst klappte das nicht, aber als ich die Suche hier in der Delphi-Praxis genutzt habe bin ich auf diesen Thread gestossen. Nachdem ich dann diese Zeilen von "Mathias Simmack" eingebaut habe (besten Dank übrigens :-D ) : Zitat:
Weiterhin hatte Matthias Simmack noch folgendes geschrieben : Zitat:
Für Access-2000-Datenbanken beispielsweise ist eine der Systemvoraussetzungen das Vorhanden sein von MS ADO >= 2.5 Wie sieht's aus, wenn ich den Delphi-XML-Parser einsetze ? Muss da ebenfalls ADO >= 2.5 enthalten sein, oder hat das eine mit dem anderen nichts zu tun ? Wenn ich beim xml-Parser dieselbe "manuelle Initialisierung" vornehmen muss (und das muss ich wirklich, genau wie M.Simmack es oben beschrieben hat, das hatte ich zwischenzeitlich auch mal ausprobiert) dann liegt für mich die Vermutung nahe, dass dieser Parser auch auf dieselben Systemresourcen zugreift, daher auch meine Frage nach den Systemvoraussetzungen für denn Fall, dass ich tatsächlich den XML-Parser in meine NON-VCL-Anwendung einbauen sollte... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz