2016-12-16 3 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

나는 내 루프에 더 많은 지연을 넣었고 전혀 깜박 거리지 않았다.