本当に必要な場合に特定のウィンドウを一意に識別する方法は、 の結果を調べて、そこでCGWindowListCopyWindowInfo
使用している pid に一致するものを選択することですappRef
。kCGWindowNumber
CFNumber は、そのウィンドウの Quartz の一意の CGWindowID です。
ただし、ウィンドウを誤ってインデックス付けしている可能性が高いようです。これはあなたのために働くはずですappRef
:
CFArrayRef windows;
AXUIElementCopyAttributeValue(appRef, kAXWindowsAttribute, (CFTypeRef*)&windows);
int windowCount = windows ? CFArrayGetCount(windows) : 0;
for (int windowIndex = 0; windowIndex < windowCount; windowIndex++)
{
AXUIElementRef windowRef = (AXUIElementRef)CFArrayGetValueAtIndex(windows, windowIndex);
... move windowRef here ...
}
それでも問題が明らかにならない場合は、クラッシュするコードとその方法を投稿してください。