Access Violation und keine Ahnung wieso
-
Krieg nachdem ich dann Wallpaper gesetzt habe immer ne AV weiß aber überhaupt nicht warum da das programm schon so funktioniert wie ich es mir vorgestellt habe und dann kommt die immer nach dem ändern des desktops

Hier die relevante funktion.Vielleicht weiß jemand den Grund.{ CoInitialize(0); HRESULT hr; IActiveDesktop *pActiveDesktop; hr = CoCreateInstance(::CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**)&pActiveDesktop); if( SUCCEEDED(hr) ) { wchar_t* name; int iSize = pfad.WideCharBufSize(); name = new wchar_t(iSize + 1); hr = pActiveDesktop->SetWallpaper(pfad.WideChar(name,iSize),0); WALLPAPEROPT wpo; wpo.dwSize = sizeof(WALLPAPEROPT); wpo.dwStyle = WPSTYLE_STRETCH ; hr = pActiveDesktop->SetWallpaperOptions(&wpo, 0); hr = pActiveDesktop->ApplyChanges(AD_APPLY_ALL); pActiveDesktop->Release(); CoUninitialize(); delete name; } }
-
CoUninitialize(); ?????????????
-
fragg schrieb:
CoUninitialize(); ?????????????Darin liegt es nicht habs mal auskommentiert und die AV kam trotzdem
-
Hallo,
an welcher Zeile tritt die AV denn auf?
Kann der Fehler davon kommen, dass Du für pActiveDesktop kein gültiges Objekt hast?
Falls Du mit
name = new wchar_t(iSize + 1);
ein Feld anlegen willst, probier es lieber mal mit
name = new wchar_t [iSize + 1];Gruss
Frank
-
An welcher Stelle tritt die AV denn auf(Debugger)???
-
komischerweiße innerhalb des try catch blocks
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); Hier bleibt er stehen --> } catch (Exception &exception) { Application->ShowException(&exception); } return 0;
-
Frank71 schrieb:
Hallo,
an welcher Zeile tritt die AV denn auf?
Kann der Fehler davon kommen, dass Du für pActiveDesktop kein gültiges Objekt hast?
Falls Du mit
name = new wchar_t(iSize + 1);
ein Feld anlegen willst, probier es lieber mal mit
name = new wchar_t [iSize + 1];Gruss
Franktrivial
name = new wchar_t(iSize + 1); anscheinend war es das, denn mit []Klammern kommt sie nicht. Danke
-
na, ganz ruhig bleiben, tief Luft holen, auf 10 zaehlen

Aber das soll anderen auch schon passiert sein.Ciao
Frank