![]() |
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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