Eu usei o script em Python . Não é infalível, mas funciona muito bem para mim.
Não repostarei o script completo sem permissão, mas aqui está um resumo: ele usa CGWindowListCopyWindowInfo
, que é importado de Quartz
, para coletar informações da janela do sistema e, em seguida, solicita que o usuário mova a janela desejada , em seguida, coleta informações da janela novamente e mostra informações sobre as que foram alteradas. As informações descartadas incluem o ID do processo, como kCGWindowOwnerPID
.
Aqui está o código:
#!/usr/bin/env python
import time
from Quartz import CGWindowListCopyWindowInfo, kCGWindowListExcludeDesktopElements, kCGNullWindowID
from Foundation import NSSet, NSMutableSet
wl1 = CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements, kCGNullWindowID)
print 'Move target window'
time.sleep(5)
wl2 = CGWindowListCopyWindowInfo(kCGWindowListExcludeDesktopElements, kCGNullWindowID)
w = NSMutableSet.setWithArray_(wl1)
w.minusSet_(NSSet.setWithArray_(wl2))
print '\nList of windows that moved:'
print w
print '\n'
O script imprime informações para a janela que mudou de posição dentro de um intervalo de 5 segundos. Então a saída é assim:
List of windows that moved:
{(
{
kCGWindowAlpha = 1;
kCGWindowBounds = {
Height = 217;
Width = 420;
X = 828;
Y = 213;
};
kCGWindowIsOnscreen = 1;
kCGWindowLayer = 8;
kCGWindowMemoryUsage = 406420;
kCGWindowName = "";
kCGWindowNumber = 77;
kCGWindowOwnerName = UserNotificationCenter;
kCGWindowOwnerPID = 481;
kCGWindowSharingState = 1;
kCGWindowStoreType = 2;
}
)}