2008-09-02 10 views

Respuesta

3

Qt incluye una aplicación de captura de pantalla de ejemplo en examples \ desktop \ screenshot. Qt funciona en una variedad de plataformas, incluida MacOSX.

http://trolltech.com/products/qt/

13

Dos opciones interesantes que he visto, pero que aún no se han usado profesionalmente, son la utilidad screencapture y una demostración de MacFuse.

La utilidad de captura de pantalla ha estado presente desde la versión 10.2, de acuerdo con la página de manual, y podría vincularse a una aplicación Cocoa mediante el uso de NSTask.

La demostración de MacFuse funcionaba creando una nueva captura de pantalla cada vez que se abría una carpeta, o algo así. La idea es que podrías escribir un guión rápido para acceder a la imagen cuando la necesites, sin tener que ejecutar realmente el guión en esa máquina.

Pero en serio, Apple tiene otro código de ejemplo llamado "Son of Grab" que usa la nueva API CGWindow, que es bastante impresionante.

http://developer.apple.com/samplecode/SonOfGrab/

1

El siguiente podría ser útil si usted está tratando de lograr esto con C++ o Python. Además, esto sería aún más útil en caso de que desee que su método programático sea portátil multiplataforma. (Windows, Linux, Mac osx e incluso más)

Una respuesta anterior menciona QT.

De la misma manera que QT le permitirá capturar y guardar una captura de pantalla, también lo hará otro marco "competidor", a saber, wxWidgets. wxWidgets es un framework de C++, pero también proporciona enlaces de python a través de wxPython.

Para leer más, utilice el siguiente enlace, buscar el libro para wxScreenDC y seleccione "Página 139" de la lista de páginas que coinciden con la búsqueda:

http://books.google.com/books?id=CyMsvtgnq0QC&vq="accessing+the+screen+with+wxScreendc"

+1

¡Gracias!Aquí está el código: wxBitmap GetScreenShot() { wxSize screenSize = wxGetDisplaySize(); wxBitmap bitmap (screenSize.x, screenSize.y); wxScreenDC dc; wxMemoryDC memDC; memDC.SelectObject (mapa de bits); memDC.Blit (0, 0, screenSize.x, screenSize.y, & dc, 0, 0); memDC.SelectObject (wxNullBitmap); bitmap de retorno; } –

9

Una forma de hacer las hacer esto sería usar NSTask en conjunción con el comando de línea de comando 'screencapture'.

Por ejemplo:

NSTask *theProcess; 
theProcess = [[NSTask alloc] init]; 

[theProcess setLaunchPath:@"/usr/sbin/screencapture"]; 
// use arguments to set save location 
[theProcess setArguments:@"blahblah"]; 
[theProcess launch]; 

El que podría abrir el archivo donde usted le dijo que se salven, procesarla, y luego borrar según sea necesario. Obviamente, una solución provisional, pero funcionaría.

8

Si está de acuerdo con la compatibilidad con Leopard, hay una nueva API de CGWindow muy potente que le permitirá tomar capturas de pantalla, instantáneas de ventana o compuestos de cualquier rango de capas de ventanas.

http://developer.apple.com/samplecode/SonOfGrab/

+0

Excelente, ¡gracias por señalar esto! –

Cuestiones relacionadas