GetDC failed - robienie screenshotow z win32

0

Mam skrypt w pythonie ktory robi screenshoty w while true, korzystajac z api windowsowego. Srednio po 20 minutach skrypt sam sie wylacza z tym błędem https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/e0cf94eb-5209-4fac-9ef3-90a94daa50b9/createcompatiblebitmap-is-failed-when-running-in-x64-mode?forum=vcgeneral . Biliblioteka do komunikacji z winapi sprawdza czy rezultat jakiejs funkcji to null, jesli tak to drukuje ten blad i wylacza program. Usunalam wiec te sys.exit dla tych warunkow aby sprawdzic co sie stanie. Program nadal sie wylacza, ale z bledem "GetDC failed", ten blad nie jest juz printowany z poziomu biblioteki wiec pochodzi pewnie bezposrednio z winapi. Czytam tu na przyklad https://stackoverflow.com/questions/8261652/assuming-that-getdchwnd-is-called-as-the-first-instruction-on-wm-create-for-w ze nie da sie uratowac programu przez wyjatkiem GetDC. Mam pomysl, aby drugi program ktory bedzie sprawdzac logi i jezeli ostatnia linijka logu to blad GetDC to po prostu automatycznie uruchoimi skrypt z powrotem. Czy to dobry pomysl, moze macie inne pomysly?

1

Nie programuje w pytonie, ale za to w WinApi całkiem sporo.
Uruchom Menadżera zadań systemu, włącz kolumny "Obiekty User" i "Obiekty GDI".
Teraz włącz Twój program i działaj w nim. Obserwuj w Menedżerze czy przyrasta liczba obiektów w Twoim programie.
Jeśli tak, tzn. że nie zwalniasz tych kontekstów (albo tworzonych bitmap).

0

w gołym Win API zasoby np DC należy zwalniać (jak @Stefan_3N zauważył)
jedyne komfortowe w tym wzgledzie środowisko jako pamiętam, MFC, robiło to w destruktorach, ale taka (pozytywna akurat) uroda C++.

Jak w Pythonie, z braku wyrazistych destruktorów? pewnie tzreba jawnie ...

1 użytkowników online, w tym zalogowanych: 0, gości: 1