Desidero impostare una determinata finestra, da un'app esterna (ad esempio textedit), in primo piano.Impostazione della finestra più frontale utilizzando l'API di accessibilità
Posso ottenere correttamente un riferimento all'app stessa utilizzando GetFrontProcess e verificare se è frontalmente la maggior parte. Se non lo è, posso usare setFrontProcess per renderlo focalizzato.
Posso quindi utilizzare l'API di accessibilità per esaminare tutte le finestre in tale applicazione. Sto controllando l'esistenza di una determinata finestra, e in tal caso la paragono contro il fronte più finestra dell'applicazione:
//get the front window of textEditApp and store it in 'currentFrontWindow'
AXUIElementCopyAttributeValue(textEditApp, kAXFocusedWindowAttribute, (CFTypeRef *)¤tFrontWindow);
Se la finestra mi interessa non è in primo piano, ho bisogno di impostarlo in modo. Ho pensato che potrei usare AXUIElement Set AttributeValue per fare questo, ma non sto ottenendo alcun successo. Di seguito è riportato come ho provato a farlo.
//set the front window of textEditApp to be desiredFrontWindow
AXUIElementSetAttributeValue(textEditApp, kAXFocusedUIElementAttribute, desiredFrontWindow);
Ho verificato che la finestra esista e che l'applicazione sia 'passata a' con successo. Ma perché questa linea di codice non porta in primo piano la finestra specificata?
Grazie.
Grazie (ancora una volta) Peter - questo funziona un fascino. Per quanto riguarda l'applicazione, sto usando setFrontProcess piuttosto che kAXFrontMostAttribute - è una cattiva idea? Avendo navigato la mia strada attraverso l'applicazione e la finestra, c'è un certo AXUIElementRef che mi interessa portarlo in primo piano (cioè dandogli il focus sulla tastiera). Posso seppellire attraverso gli strati di elementi per ottenere un riferimento ad esso, ma come faccio a metterlo a fuoco? Esiste un equivalente di kAXMainAttribute per gli elementi? Forse dovrei postare (ancora) un altro Q. –