2009-07-05 3 views
0

Je dois être capable d'identifier une seule fenêtre sur l'écran de l'utilisateur et d'en faire une capture d'écran. Les données d'écran doivent être stockées en mémoire et non écrites sur le disque.Comment puis-je prendre une capture d'écran d'une seule fenêtre en utilisant Cocoa ou Carbon sur OS X?

Ceci est déjà supporté par l'outil de ligne de commande/usr/sbin/screencapture ou par l'utilitaire Grab (bien que leur fonctionnalité ne soit pas suffisante pour justifier leur lancement en tant que sous-processus).

Références/Conseils

  • nm/usr/sbin/screencapture retourne interfaces privées de cacao, y compris _CGSGetSharedWindow qui semblent le faire.
  • applications tierces SnapzPro le fait (mais ne fournit pas le code source)
+1

Je déconseille d'utiliser le carbone - il est presque sur le point d'être complètement obsolète – zpesk

Répondre

6

Mac OS X 10.5 a introduit le Quartz Window Services API pour ce faire.

+0

Cela fait l'affaire. Un court exemple de code fourni par Google, truqué avec le profilage. http://developer.apple.com/samplecode/SonOfGrab/index.html –

-4

Commande + Maj + 4 pour activer la sélection d'écran, puis appuyez sur la barre d'espace pour sélectionner toute la fenêtre.

0

La première chose qui me vient à l'esprit est GrabFS de MacFuse. La source est here.

Questions connexes