7 votos

¿Cómo puedo encontrar la windowid de Google Chrome para pasar a la captura de pantalla -l

Me gustaría utilizar screencapture -l hacer automatizada capturas de pantalla de Google Chrome. Esto requiere el conocimiento de los windowid de Google Chrome proceso que se está ejecutando.

Para las aplicaciones que soporte Applescript, esta pregunta tiene la respuesta. Pero esa solución no funciona para las aplicaciones que no son de secuencias de comandos, como Google Chrome.

Hay alguna forma de recuperar la windowid de un ejecutando Google Chrome proceso a partir de una secuencia de comandos de Python? Sé que el Cuarzo de Depuración de la aplicación pueden hacerlo, pero que una aplicación GUI, por lo que no puede ser invocada mediante una secuencia de comandos.

4voto

scottmarlowe Puntos 2952

Usted puede hacer eso con GrabFS, una captura de pantalla de sistema de archivos para mac OS X. (Descarga en la parte inferior de la página. Funciona muy bien para mí en 10.8.2 con OSXFUSE) te da las texturas de todos los procesos de windows como archivos que usted puede simplemente copiar. Para actualizar la captura de pantalla, copiar de nuevo.

Se parece a esto (conversión de TIFF a PNG para ahorrar espacio.): Google Chrome Screenshot of this page taken with GrabFS.]![Screenshot of Google Chrome displaying this thread taken with GrabFS. Es probable que tengas que hacer un poco de shell scripting para automatizar este proceso, pero que va a ser fácil.

2voto

synthesizerpatel Puntos 164

Lo resuelto por escribir una secuencia de comandos de python. Cuando se ejecuta puede especificar una aplicación para el volcado de la lista de Id de windows, o si no se especifica ninguna aplicación en la que se va a volcar todas las ventanas.

Las ventanas son objeto de dumping, el orden de la presentación, así que lo que está en la parte superior de la lista es el "más alto" de la ventana (en principio activo (si es visible)

Ejemplo De Salida

bloop:~ r$ ./wlist2 Chrom
9040 0 "Chromium" "terminal - How do I find the windowid of Google Chrome to pass to screencapture -l - Ask Different"
9039 0 "Chromium" ""

Cómo utilizar esto para realizar una captura de pantalla de forma automática a partir de una secuencia de comandos de shell

screencapture -l $(./wlist2 Chrom | head -1 | awk '{print $1}') out.png

Secuencia de comandos:

#!/usr/bin/python2.6

from itertools import chain
from Quartz import CGWindowListCreate as create_list
from Quartz import CGMainDisplayID as display_id
from Quartz import CGWindowListCreateDescriptionFromArray as lookup
import sys

class Windows(list):
    def find(self, name):
        for window in self:
            if window.IsOnscreen and window.OwnerName.find(name) > -1:
                print window

    def dump(self):
        for window in self:
            if window.IsOnscreen:
                print window


    def __getitem__(self, item):
        result = list.__getitem__(self, item)
        try:
            return Windows(result)
        except TypeError:
            return result

class Window(object):

    key_list = []

    def __init__(self, kwargs):
        for k in kwargs.keys():
            setattr(self, k.replace('kCGWindow',''), kwargs[k])
            self.key_list.append(k.replace('kCGWindow',''))

    def __repr__(self):
        t = '%d %d "%s" "%s"' % (
            getattr(self, 'Number', -1),
            getattr(self, 'Layer', -1),
            getattr(self, 'OwnerName', None),
            getattr(self, 'Name', None)
        )
        return t.encode('utf-8')

wlist=Windows()
for x in lookup(create_list(display_id(), 0)):
    wlist.insert(0, Window(dict(x)) )

if len(sys.argv) > 1:
    wlist.find(sys.argv[1])
else:
    wlist.dump()

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X