次のコード ブロックを実行すると、GetPixel は毎回約 10,000 回目の呼び出しでエラーをスローし始めます。コードを try-except ステートメントに入れると、最初の失敗の後のすべての呼び出しが失敗します。回復する唯一の方法は、スクリプトを終了して再度実行することです。通話の間に短い睡眠を入れてみました。呼び出しの間にガベージ コレクションをトリガーしようとしました。IDE からスタンドアロン プロセスとしてスクリプトを実行してみました。何か案は?スクリプトを実行して、失敗した場合に報告することも役に立ちます。
import gc
import os
import time
import win32api, win32con, win32gui
import sys
import win32com.client
terms = 0
def get_pixel_colour(i_x, i_y):
i_desktop_window_id = win32gui.GetDesktopWindow()
i_desktop_window_dc = win32gui.GetWindowDC(i_desktop_window_id)
long_colour = win32gui.GetPixel(i_desktop_window_dc, i_x, i_y)
i_colour = int(long_colour)
return (i_colour & 0xff), ((i_colour >> 8) & 0xff), ((i_colour >> 16) & 0xff)
for x in range (0, 1000000):
colour = get_pixel_colour(500, 500)
terms = terms + 1
print terms
返されるエラーは
error: (0, 'GetPixel', 'No error message is available')