Establecer la ventana no propiedad siempre en la parte superior - Al igual que la aplicación "a flote"

He configurado una tecla de acceso rápido global conRegisterEventHotkey. Cuando el usuario lo presiona, obtiene la ventana actualmente enfocada conCGWindowListCopyWindowInfo, y luego necesito configurarlo siempre en la parte superior.

Si la ventana actual está en mi proceso (desde el cual estoy ejecutando el código), simplemente puedo convertir elwindowNumber deCGWindowListCopyWindowInfo a unNSWindow y hacersetLevel:

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

Mi problema No puedo hacer esto si la ventana actualmente enfocada no está en mi proceso. ¿Me puede mostrar cómo?

Cosas que probé:

Esta aplicación llamada "Afloat" usó "SIMBL" para lograr esto. Desde cualquier ventana, puede presionar Cmd + A y se establecerá siempre en la parte superior. Sin embargo, estoy tratando de hacer con C / ObjC desde mi aplicación de escritorio normal sin el uso de ayudantes como SIMBL.Fuente:Forzar mantener la ventana de la aplicación en la parte superior - Mac OS XSIMBL:http://www.culater.net/software/SIMBL/SIMBL.phpA flote:https://www.macupdate.com/app/mac/22237/afloat

vengo a través deCGSSetWindowLevel enCGPrivate.h - material indocumentado -https://gist.github.com/Noitidart/3664c5c2059c9aa6779f#file-cgsprivate-h-L63 - Sin embargo, recuerdo que intenté algo como esto en el pasado, pero recibí un error al intentar conectarme a una ventana que no estaba en el proceso de llamada.

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

Solo el propietario de una ventana puede manipularla. Entonces, Apple tiene el concepto de un propietario universal que posee todas las ventanas y puede manipularlas a todas. Solo puede haber un propietario universal a la vez (el Dock).

Tal vez, ¿hay alguna forma de pretender que mi proceso de llamada sea temporalmente el muelle? Tal vezCGSGetConnectionIDForPSN para el muelle entonces usa esa conexión?

Mi uso: estoy tratando de replicar la funcionalidad de mi complemento de navegador de código abierto, gratuito -https://addons.mozilla.org/en-US/firefox/addon/topick/ - Entonces mi proceso de llamada si Firefox. Funciona en Windows y Linux en este momento, y solo necesito descubrir cómo hacerlo en mac para ventanas que no son Firefox.

Respuestas a la pregunta(0)

Su respuesta a la pregunta