現在表示可能なシステムウィンドウに目に見える変更があるたびに、メソッドを呼び出す必要があります。たとえば、次のような完全な表示ウィンドウリストを取得しています。
CFArrayRef openWindows =(CGWindowListCreate(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID));
これにより、次のような配列が返されます。
{
kCGWindowAlpha = 1;
kCGWindowBounds = {
Height = 713;
Width = 1279;
X = 1;
Y = 22;
};
kCGWindowIsOnscreen = 1;
kCGWindowLayer = 0;
kCGWindowMemoryUsage = 3772468;
kCGWindowName = "Stack Overflow";
kCGWindowNumber = 7138;
kCGWindowOwnerName = "Google Chrome";
kCGWindowOwnerPID = 49972;
kCGWindowSharingState = 1;
kCGWindowStoreType = 2;
}
kCGWindowMemoryUsage値は絶えず変化するため、以前に保存されたCFArrayRefを現在のものと単純に比較することはできません。