2016-12-16 18 views
1

特定のアプリケーションウィンドウのスクリーンショットを撮っているうちにwin32guiに問題が発生しています。Pythonのwin32guiアプリケーションウィンドウがちらつきます

私のスクリプト(以下のコード)は、それを分析するためのウィンドウのスクリーンショットを撮ります。特定のウィンドウでは完全に動作しますが、スクリプトを作成している間にスクリーンショットを取得してウィンドウがちらつくようなアプリケーションが発生しました。 (私は全体の窓に白いフラッシュを見続ける)

これまで経験したことがあり、解決策を持っていた人は誰ですか?

def getImage(self,hwnd = None): 
    if hwnd == None: 
     hwnd = self.hwnd 
    self.whereIsWindow(hwnd) 

    left, top, right, bot = win32gui.GetWindowRect(hwnd) 

    w = right - left 
    h = bot - top 
    self.width = w 
    self.height = h 
    hwndDC = win32gui.GetWindowDC(hwnd) 
    mfcDC = win32ui.CreateDCFromHandle(hwndDC) 
    saveDC = mfcDC.CreateCompatibleDC() 
    saveBitMap = win32ui.CreateBitmap() 
    saveBitMap.CreateCompatibleBitmap(mfcDC, w, h) 
    saveDC.SelectObject(saveBitMap) 

    result = windll.user32.PrintWindow(hwnd, saveDC.GetSafeHdc(), 0) 
    bmpinfo = saveBitMap.GetInfo() 
    bmpstr = saveBitMap.GetBitmapBits(True) 

    im = Image.frombuffer(
     'RGB', 
     (bmpinfo['bmWidth'], bmpinfo['bmHeight']), 
     bmpstr, 'raw', 'BGRX', 0, 1) 

    win32gui.DeleteObject(saveBitMap.GetHandle()) 
    saveDC.DeleteDC() 
    mfcDC.DeleteDC() 
    win32gui.ReleaseDC(hwnd, hwndDC) 

私は犯人を知っているが、私はそれらをコメントアウト場合、それがちらつき停止しますが、それはオプションではありませんすべてのメモリをとり、最後の5行です。

答えて

0

私は自分のループにもっと遅れを入れてしまい、ちらつきも全くありませんでした。

関連する問題