直接コードに:
輸入win32guiの 輸入win32ui から ctypesのはインポートWINDLL インポート画像 HWND = win32gui.FindWindowを(なし、「電卓」) #あなたが全体のウィンドウかどうかに応じて、以下の行を変更 #または単にクライアント領域を。 #左、上、右、ボット= win32gui.GetClientRect(HWND)は 、上部を左、右、ボット= win32gui.GetWindowRect(HWND) W右= - 左 H =ボット- トップ hwndDC = win32gui.GetWindowDC(HWND) mfcDC =win32ui.CreateDCFromHandle(hwndDC) saveDC = mfcDC.CreateCompatibleDC() saveBitMap = win32ui.CreateBitmap() saveBitMap.CreateCompatibleBitmap(mfcDC、W、H) saveDC.SelectObject(saveBitMap) #変更するには、ウィンドウ全体をしたいかに応じて、以下の行 #をあるいは単にクライアント領域。 #結果= windll.user32.PrintWindow(HWND、saveDC.GetSafeHdc()、1) RESULT = windll.user32.PrintWindow(HWND、saveDC.GetSafeHdc()、0) プリント(結果) bmpinfo = saveBitMap.GetInfo() bmpstr = saveBitMap.GetBitmapBits(真) イム =Image.frombuffer( ' RGB ' 、 ([bmpinfo ' bmWidth ' ]、[bmpinfo ' bmHeight ' )]、 bmpstr、' 生'、' BGRX '、0、1 ) win32gui.DeleteObject(saveBitMap.GetHandle()) saveDC。 DeleteDC() mfcDC.DeleteDC() win32gui.ReleaseDC(HWND、hwndDC) であれば、結果== 1 : #1 PrintWindow成功 im.save(" test.png ")
他のアプリケーションでは、ソリューションは別のポストを参照して、スクリーンショットのコピーが黒で見つける:解決される問題の複製ブラウザのスクリーンショットを使用すると、黒い画面が表示されます