2014-10-16 3 views
0

Это мое меню дока: OS X Programatically Нажмите Пункт меню Dock Menu

Я хотел бы нажать, что ими программную кнопку "Показать Самый новое окно". Можно ли это программировать, используя Cocoa или CoreFoundation?

Я знаю PID, с которым связан элемент дока.

Благодаря

ответ

1

Это звучит как задача, которая может быть сделано с помощью GUI Scripting с помощью AppleScript.

+0

Спасибо Simon за быстрый ответ. Мне было интересно, если можно не использовать AppleScript, потому что я не думаю, что могу запустить AppleScript из своего кода на C :( – Noitidart

+0

Хм, есть [NSAppleScript] (http://developer.apple.com/library/mac/documentation /Cocoa/Reference/Foundation/Classes/nsapplescript_Class/Reference/Reference.html) Класс, но я не уверен, как использовать это в C. – Simon

+0

А интересно, я буду исследовать это, но похоже, что ему нужен «Вспомогательный режим», enabled :( – Noitidart

1

Существует много способов добиться этого, хотя обычно вы можете легко установить AppleScript или oascript, которые могут справиться с этим. В основном это связано с использованием AXRaise, который по сути вызывает функцию для подъема самого верхнего окна указанного приложения.

Код:

set mostrecentWindow to "mostrecentWindow" 
set theApplication to "Safari" 
tell application "System Events" 
    if exists process theApplication then 
     --raise frontmost window 
     tell process theApplication 
      set frontmost to true 
      perform action "AXRaise" of (windows whose title is mostrecentWindow) 
     end tell 
    else if not (exists process theApplication) then 
     --display alert 
     display alert "Warning: process " & theApplication & " is not running" 
    end if 
end tell 

В приведенном выше примере проверяет, является ли процесс или нет запущенных Safari, и если после этого поднять это последняя (или самой передней) окно на передний план; в противном случае вы увидите предупреждение о том, что процесс не запущен.

+0

Благодарим вас за отличный пример. Это потрясающе даже лучше, чем имитировать щелчок по пункту меню пунктов док-станции. На самом деле я предпочитаю не симулировать клик на меню док-станции, это Эм. Однако «AXRaise» требует «Вспомогательный режим», а? Можете ли вы поделиться методом, который не нуждается в помощнике movde. Я очень ценю это. Я не использую Mac, поэтому я ничего не знаю об этом :(, но у меня есть замечательные пользователи Mac и многие из них, поэтому им необходимо их поддерживать. – Noitidart

+1

Ну, я выяснил метод, не включающий вспомогательные устройства , но я действительно думаю, что это слишком непредсказуемо, чтобы быть чем-то, что я рекомендовал бы всем, кто использует, особенно для всего, что вы могли бы распространять, я с удовольствием поделюсь информацией, если вам интересно. –

+0

Да, пожалуйста, человек, я действительно ценю это! Не могли бы вы объяснить непредсказуемость этого вопроса.Я обязательно буду работать над этим, спросив, что я иду в эти встречи с кодом. Спасибо большое! – Noitidart