1

我已经下载了 Python 3.7 和 3.9(均为 64 位)以及 VS Code 来复制以下代码: https ://www.youtube.com/watch?v=WymCpVUPWQ4&t=1291s

但是,当安装“pywin32”然后将包导入代码时,我在三个导入中得到“unresolved-import”:win32gui、win32ui 和 win32con。

我尝试了多种安装方法,奇怪的是从上面的链接复制的代码有效。

  1. 尝试通过“pip”安装 https://pypi.org/project/pywin32/

  2. 以及从以下位置下载可执行程序进行安装:https ://github.com/mhammond/pywin32/releases

  3. 包括使用来自以下网址的 .whl 文件进行安装:https ://www.lfd.uci.edu/~gohlke/pythonlibs/ (及其各自的 Python 版本和位),然后继续执行此处解释的“安装后”: 无法在 Pycharm 中使用来自 pywin32 的 win32gui 模块

  4. 来自源 Forge https://sourceforge.net/projects/pywin32/

尽管如此,错误还是有说服力的。我不太确定自己做错了什么,或者使用的版本当前是否已过时/不兼容。

我使用 64 位可执行文件/.whl 文件在 Python 3.7 和 3.9 中尝试了 4 次安装。

这是我正在使用的代码:

作为旁注,如果“hwnd”设置为“NONE”,则代码可以正常工作,但如果我对此进行评论并使用“hwnd = win32gui.FindWindow(None,'Calculator')”行,它只会显示黑屏即使计算器应用程序已打开。

我想是因为进口。

import win32gui
import win32ui
import win32con
import numpy as np
import PIL 
import cv2 as cv


def screen():
        w = 1920
        h = 1080

        
        #hwnd = win32gui.FindWindow(None, 'Calculator')

        hwnd = None

        wDC = win32gui.GetWindowDC(hwnd)
        dcObj = win32ui.CreateDCFromHandle(wDC)
        cDC = dcObj.CreateCompatibleDC()
        dataBitMap = win32ui.CreateBitmap()
        dataBitMap.CreateCompatibleBitmap(dcObj, w, h)
        cDC.SelectObject(dataBitMap)
        cDC.BitBlt((0, 0), (w, h), dcObj, (0,0), win32con.SRCCOPY)

        signedIntsArray = dataBitMap.GetBitmapBits(True)
        #img = np.fromstring(signedIntsArray, dtype='uint8')
        img = np.frombuffer(signedIntsArray, dtype='uint8')
        img.shape = (h, w, 4)

                # free resources
        dcObj.DeleteDC()
        cDC.DeleteDC()
        win32gui.ReleaseDC(hwnd, wDC)
        win32gui.DeleteObject(dataBitMap.GetHandle())
        #img = img[...,:3]
        #img = np.ascontiguousarray(img)
        return img

while(True):
    
    sc = screen()
    resize = cv.resize(sc,(800,500))
    cv.imshow('idk',resize)

    if cv.waitKey(1) == ord('q'):
        cv.destroyAllWindows()
        break
4

0 回答 0