2016-10-17 11 views
2

Мне нужно открыть приложение OS X, когда открывается презентация PowerPoint. Я получил ответ VBA, когда powerpoint open (Auto_Open()). Но мне нужно перезвонить для каждой презентации.Есть ли способ получить обратный вызов от powerpoint, когда открывается какая-либо презентация? (Версия Powerpoint 2016- Mac)

В окнах мы можем открывать каждую презентацию в отдельном приложении PowerPoint (разностный экземпляр). В Mac приложение Powerpoint откроется один раз, и вся презентация откроется под тем же приложением Powerpoint (версия Powerpoint 2016 - Mac).

Мне нужно перезвонить, когда каждый файл презентации открыт, и мне нужно сделать фрагменты кода в приложении для какао.

+0

Возможно, вы можете связать что-то вместе, используя 'fswatch' (установить с помощью' homebrew'), чтобы рекурсивно наблюдать за папками пользователей для открытия файлов PDF. Или, может быть, что-то с 'sudo opensnoop -n PowerPoint' или somesuch. –

+0

«В окнах мы можем открывать каждую презентацию в отдельном приложении PowerPoint (разностный экземпляр)« На самом деле нет, вы не можете. Недавние версии позволяют открывать несколько файлов в отдельных окнах, но есть только один экземпляр приложения. Ваше приложение может периодически запрашивать PPT для свойства Presentations.Count, возможно, поддерживать массив/список имен каждой открытой презентации для проверки. В Windows PPT может захватить событие, созданное при открытии презентаций, но, насколько я знаю, это не поддерживается в Mac PPT. –

+0

@SteveRindsberg: В окнах его новая информация для меня. Благодарим вас за обновление и в Mac PPT поддерживаем только несколько событий. В ppt Application.PresentationOpen Event есть одно событие. Я думаю, что он даст ответ, когда откроется каждая презентация. Но это событие не поддерживается в версии Mac. Есть ли другой способ определить, когда презентация открыта? Что-нибудь вроде мониторинга активности или что-то в этом роде? –

ответ

0

Идея возможной работы заключается в том, чтобы проверить проверку открываемых презентаций и сравнить ее с уже открытыми ранее презентациями.

Во-первых, когда этот скрипт начинает работать, он проверяет, работает ли PowerPoint (-> if then then quit). Если PP запускается, сценарий записывает количество открытых презентаций.

Затем сценарий проходит через цикл: в этом примере он повторяется 100 раз (только для моего теста, но он должен повторяться навсегда!). Для каждой итерации он ищет список представлений PP и сравнивается со списком раньше: если презентация отсутствует в предыдущем списке, то она новая, открытая!

Сценарий также останавливается при выходе из PowerPoint с предупреждением (попытка блока).

tell application "System Events" to set PP_Running to exists (processes where name is "Microsoft PowerPoint") 
if not PP_Running then return -- Power point is not launched ! 
tell application "Microsoft PowerPoint" to set Old_list to name of every presentation -- get initial list of open presentations 

repeat with I from 1 to 100 -- for test, but it should be repeat with no limit 

try 
    tell application "Microsoft PowerPoint" to set New_list to name of every presentation 
on error 
    display alert "PowerPoint no longer launched" 
    return -- quit the loop 
end try 
repeat with aDoc in New_list 
    if not (Old_list contains aDoc) then -- new document has been opened !! 
     set Old_list to New_list 
     log "Open new document = " & aDoc -- do what ever you need to do !! 
    end if 
end repeat 
delay 0.5 
set I to I + 1 
end repeat 

Испытано на Эль Capitain/PP 2011: но я думаю, что нет ничего не изменилось с ПП 2011 до ПП 2016 года в «имя каждой презентации».

 Смежные вопросы

  • Нет связанных вопросов^_^