Какое приложение имеет фокус при срабатывании глобального ярлыка

Я использую глобальный ярлык для всплывающего диалогового окна. Но я хотел бы заполнить диалог в зависимости от приложения, имеющего фокус в момент срабатывания ярлыка.

Но я не могу найти способ сделать это. Я прочитал код расширения здесь, но трудно понять, как изменить код и как перекомпилировать электрон.

Если у кого-то есть указатель, это будет очень признательно :)


person Benjamin Van Ryseghem    schedule 25.05.2015    source источник


Ответы (2)


Я не мог найти способ узнать, какое приложение было в фокусе раньше, но я смог скрыть свое приложение и вернуть фокус на предыдущее, имитируя щелчок по опции «скрыть» в меню просмотра:

const menu = require('electron').Menu;

menu.sendActionToFirstResponder('hide:');

Я надеюсь, что это помогает.

person Agu Dondo    schedule 11.05.2016

Я сам нашел ответ, похоже, что самое переднее приложение (по крайней мере, в OSX) по-прежнему было приложением, которое было в фокусе до вызова.

Вот мой код ClojureScript для поиска информации о приложении

(defn- get-current-app-info-osx
  "Return info about the current frontmost application on OSX"
  []
  (let [remote  (js/require "remote")
        nodobjc (js/require "nodobjc")]
    (.framework nodobjc "AppKit")
    (let [workspace (.NSWorkspace nodobjc "sharedWorkspace")
      app       (workspace "frontmostApplication")
      app-name  (str (app "localizedName"))
      app-id    (str (app "bundleIdentifier"))]
  {:name app-name
   :id   app-id})))
person Benjamin Van Ryseghem    schedule 14.05.2016