run react open helmet deploy compile app cocoa macos

cocoa - helmet - react open graph



¿Cómo lanzar la aplicación y traerla al frente usando Cocoa api? (6)

¿ NSRunningApplication en NSRunningApplication ?

Soy muy nuevo en la programación de cacao y no puedo encontrar la manera de hacer lo siguiente:

  • Iniciar una aplicación particular por nombre
  • Haz algo de trabajo
  • Más tarde traigo esa aplicación que he empezado a ser el proceso frontal.

Por lo que he encontrado en Carbon API, parece que las llamadas que debo usar son launchApplication () y setFrontProcess ().

¿Pero cómo hacer esto en cacao? Es decir, lanzarlo, obtener PID, establecer que PID sea un proceso frontal. Intenté buscar ejemplos en google y no encontrar nada ...

Si alguno de ustedes puede proporcionar una muestra minimalista que sería increíble :)

Gracias por adelantado.


En swift 4, puedes usar NSWorkspace.shared.launchApplication(appName:) para abrir una aplicación. También hace que la aplicación lanzada al frente en mi caso.

También puedes probar:

do { try NSWorkspace.shared.launchApplication(at: yourAppURL, options: .andHideOthers, configuration: [:]) } catch { printError("Failed to launch the app.") }

Opción andHideOthers Ocultar andHideOthers : Oculta todas las aplicaciones, excepto la recién lanzada.


NSRunningApplication está disponible en Mac OS X 10.6 o posterior.

Si tiene que admitir sistemas anteriores, esto se puede hacer con API como GetCurrentProcess () y SetFrontProcess () y la antigua estructura ProcessSerialNumber.


Para iniciar una aplicación, use la clase NSWorkspace : Referencia de NSWorkspace

En concreto, la aplicación launchApplication: .

No sé la respuesta de la parte de activación de mi cabeza. Puede activar su propia aplicación con -[NSApplication activateIgnoringOtherApps:] , pero no sé cómo hacerlo para otras aplicaciones.


Para iniciar una aplicación:

[[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Safari.app"];

Para activar una aplicación:

NSRunningApplication* app = [NSRunningApplication runningApplicationWithProcessIdentifier: PID]; [app activateWithOptions: NSApplicationActivateAllWindows]; // or NSArray* apps = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.bla.blah"]; [(NSRunningApplication*)[apps objectAtIndex:0] activateWithOptions: NSApplicationActivateAllWindows];


Para la versión Swift2

Ejecutar aplicación:

let task = NSTask() task.launchPath = "/usr/bin/env" task.arguments = ["/Applications/TextEdit.app/Contents/MacOS/TextEdit"] task.launch()

Para obtener la aplicación utilizando el identificador de paquete:

var apps: [AnyObject] = NSRunningApplication.runningApplicationsWithBundleIdentifier("com.apple.TextEdit") var MyApp: [NSRunningApplication] = apps as! [NSRunningApplication] for app in MyApp { }

Todavía estoy tratando de encontrar el modo de conocer el estado de la aplicación "activo", "ocultar", etc. Pero no tengo éxito hasta ahora.