外部アプリ (textedit など) から特定のウィンドウを最前面に設定したいと考えています。
GetFrontProcess を使用してアプリ自体への参照を正常に取得し、それが最前面にあるかどうかを確認できます。そうでない場合は、setFrontProcess を使用してフォーカスを合わせることができます。
その後、アクセシビリティ API を使用して、そのアプリケーションの下にあるすべてのウィンドウを調べることができます。特定のウィンドウが存在することを確認しています。存在する場合は、アプリケーションの最前面のウィンドウと比較します。
//get the front window of textEditApp and store it in 'currentFrontWindow'
AXUIElementCopyAttributeValue(textEditApp, kAXFocusedWindowAttribute, (CFTypeRef *)¤tFrontWindow);
関心のあるウィンドウが最前面にない場合は、そのように設定する必要があります。これを行うには AXUIElement Set AttributeValue を使用できると思いましたが、成功していません。以下は、私がそれをやろうとした方法です。
//set the front window of textEditApp to be desiredFrontWindow
AXUIElementSetAttributeValue(textEditApp, kAXFocusedUIElementAttribute, desiredFrontWindow);
ウィンドウが存在し、アプリケーションが正常に「切り替え」られていることを確認しました。しかし、このコード行が指定されたウィンドウを最前面に表示しないのはなぜでしょうか?
ありがとう。