3 votes

Comment utiliser screencapture pour capturer les fenêtres flottantes ?

J'essaie d'automatiser la capture périodique d'une fenêtre flottante. Plus précisément, de la fenêtre flottante "Appel en cours" qui est utilisée par Skype lorsque la fenêtre principale est hors écran.

En cherchant sur Google, j'ai découvert que tout ce dont j'ai besoin est un identifiant de fenêtre à transmettre à screencapture :

screencapture -l<win_id> <output_file>

Le problème est que je n'ai pas trouvé le moyen d'obtenir l'identifiant de la fenêtre pour "Appel en cours". Voici ce que j'ai essayé jusqu'à présent :

$ osascript -e 'tell app "Skype" to id of first window whose floating is true'
20:61: execution error: Skype got an error: Can’t get window 1 whose floating = true. Invalid index. (-1719)
$ osascript -e 'tell app "Skype" to id of first window whose name is "Current Call"'
20:67: execution error: Skype got an error: Can’t get window 1 whose name = "Current Call". Invalid index. (-1719)

Quelqu'un sait-il comment obtenir l'identifiant de la fenêtre "Appel en cours" ?

Ou, alternativement, quelqu'un sait-il si je peux obtenir cette capture d'écran d'une autre manière ? (par exemple, exécuter screencapture avec d'autres arguments, ou utiliser un autre outil pour capturer la capture d'écran)


Mise à jour

J'ai également essayé ce qui suit :

$ osascript -e 'tell app "Skype" to id of window 0'
-1
$ osascript -e 'tell app "Skype" to id of window 1'
-1
$ osascript -e 'tell app "Skype" to id of window 2'
84
$ osascript -e 'tell app "Skype" to id of window 3'
20:22: execution error: Skype got an error: Can’t get window 3. Invalid index. (-1719)

La fenêtre avec l'id 84 est la fenêtre principale de skype. Je suis donc un peu perplexe. Qu'est-ce que -1 est censé signifier ?

1voto

thismachine Points 71

J'ai écrit un utilitaire en ligne de commande qui recouvre screencapture et la bibliothèque de fenêtrage Quartz.

Attrapez-le ici : https://github.com/thismachinechills/pyscreencapture

Utilisez-le comme ça :

./screencapture.py Skype -t Current Call -w all_windows above_window

0voto

adayzdone Points 1798

Essayez :

tell application "Skype" to id of first window whose name = ""

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X