Definir a janela de propriedade sempre sempre no topo - como o aplicativo "À tona"

Eu configurei uma tecla de atalho global comRegisterEventHotkey. Quando o usuário pressiona, ele obtém a janela atualmente focada comCGWindowListCopyWindowInfoe, em seguida, preciso defini-lo sempre no topo.

Se a janela atual estiver em meu processo (a partir da qual estou executando o código), posso simplesmente converter owindowNumber deCGWindowListCopyWindowInfo para umNSWindow e fazersetLevel:

nswin = [NSApp windowWithWindowNumber:windowNumber]
[nswin setLevel: Int(CGWindowLevelForKey(kCGFloatingWindowLevelKey))]

Meu problema Não consigo fazer isso se a janela atualmente focada não estiver no meu processo. Pode me mostrar como?

Coisas que eu tentei:

Este aplicativo aqui chamado "Afloat" usou "SIMBL" para fazer isso. A partir de qualquer janela, você pode pressionar Cmd + A e ele ficará sempre no topo. No entanto, estou tentando fazer com o C / ObjC do meu aplicativo de desktop normal sem o uso de auxiliares como o SIMBL.Fonte:Forçar a manutenção da janela do aplicativo no topo - Mac OS XSIMBL:http://www.culater.net/software/SIMBL/SIMBL.phpÀ tona:https://www.macupdate.com/app/mac/22237/afloat

Me depareiCGSSetWindowLevel noCGPrivate.h - material não documentado -https://gist.github.com/Noitidart/3664c5c2059c9aa6779f#file-cgsprivate-h-L63 - No entanto, lembro-me de que tentei algo assim no passado, mas receberia um erro ao tentar conectar-me a uma janela que não estava no processo de chamada.

Diz aqui -https://github.com/lipidity/CLIMac/blob/114dfee39d24809f62ccb000ea22dfda15c11ce8/src/CGS/CGSInternal/.svn/text-base/CGSConnection.h.svn-base#L82

Somente o proprietário de uma janela pode manipulá-la. Portanto, a Apple tem o conceito de um proprietário universal que possui todas as janelas e pode manipular todas elas. Só pode haver um proprietário universal por vez (o Dock).

Talvez, de qualquer maneira, finja que meu processo de chamada seja temporariamente o dock? TalvezCGSGetConnectionIDForPSN para o dock, em seguida, usar essa conexão?

Meu uso: estou tentando replicar a funcionalidade do meu complemento de navegador de código aberto e gratuito -https://addons.mozilla.org/en-US/firefox/addon/topick/ - então o meu processo de chamada se o Firefox. Ele funciona no Windows e Linux no momento e só precisa descobrir como fazê-lo no mac para janelas que não sejam do Firefox.

questionAnswers(0)

yourAnswerToTheQuestion