Код: Выделить всё
import ctypes
from ctypes import wintypes
def CaptureWebcam(index: int, filePath: str) -> bool:
avicap32 = ctypes.windll.avicap32
WS_CHILD = 0x40000000
WM_CAP_DRIVER_CONNECT = 0x0400 + 10
WM_CAP_DRIVER_DISCONNECT = 0x0402
WM_CAP_FILE_SAVEDIB = 0x0400 + 100 + 25
hcam = avicap32.capCreateCaptureWindowW(
wintypes.LPWSTR("Blank"),
WS_CHILD,
0, 0, 0, 0,
ctypes.windll.user32.GetDesktopWindow(), 0
)
result = False
if hcam:
if ctypes.windll.user32.SendMessageA(hcam, WM_CAP_DRIVER_CONNECT, index, 0):
if ctypes.windll.user32.SendMessageA(hcam, WM_CAP_FILE_SAVEDIB, 0, wintypes.LPWSTR(filePath)):
result = True
ctypes.windll.user32.SendMessageA(hcam, WM_CAP_DRIVER_DISCONNECT, 0, 0)
ctypes.windll.user32.DestroyWindow(hcam)
return result
Светодиодный индикатор моей веб-камеры загорается, что означает, что сценарий обращается к моей веб-камере, как бы он ни был сохраняет пустой файл (0 байт) на диск, и функция возвращает False.
Подробнее здесь: https://stackoverflow.com/questions/790 ... types-libr