Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Drakaris en 16 Abril 2022, 12:30 pm



Título: Al hacer un screenshot con python3 en windows, la imagen me sale en negro.
Publicado por: Drakaris en 16 Abril 2022, 12:30 pm
Buenos dias.
Quiero hacer una captura de pantalla con python3 en windows 10 PRO y al hacerla me crea la imagen y me la guarda, pero la imagen esta en negro.
El script lo ejecuto como administrador y se ejecuta como un servicio en Windows.
Código
  1.    import pyscreenshot
  2.    def screenshot(id):
  3.        try:
  4.            date = datetime.datetime.now()
  5.            screen = pyscreenshot.grab()
  6.            screen.save(f"{Environment.transfers}/ClassAdmin_screenshot_{date.day}-{date.month}-{date.year}_{date.hour}-{date.minute}-{date.second}.png".replace("\\","/"))
  7.            return True
  8.        except:
  9.            return False
  10.  

Este mismo codigo lo ejecuta también el GNU/Linux y necesito dar permisos al servidor de ventanas X para que me haga la captura sino no lo hace. (ni se guarda la imagen). Lo hago haciendo una tarea programada (crontab) poniendo
Código:
@reboot    root    xhost si:localuser:root
Aunque esta solución conlleva riesgo, ya que te estas exponiendo que cualquier software que corra como root pueda hacer capturas de pantallas.

Mi pregunta es...¿Como puedo solucionar el problema de la imagen en negro al hacer screenshot en Python3 en un SO Windows 10 Pro?
https://imgur.com/gallery/DckP6xC
¿Existe un equivalente del comando xhost en windows 10? Pues la razón de la imagen en negro debe ser porque el administrador o el programa python no tiene acceso a la tarjeta grafica o al servidor de ventanas. En windows es el proceso Explorer.exe según se.

Gracias de antemano.