Идея возможной работы заключается в том, чтобы проверить проверку открываемых презентаций и сравнить ее с уже открытыми ранее презентациями.
Во-первых, когда этот скрипт начинает работать, он проверяет, работает ли 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 года в «имя каждой презентации».
Возможно, вы можете связать что-то вместе, используя 'fswatch' (установить с помощью' homebrew'), чтобы рекурсивно наблюдать за папками пользователей для открытия файлов PDF. Или, может быть, что-то с 'sudo opensnoop -n PowerPoint' или somesuch. –
«В окнах мы можем открывать каждую презентацию в отдельном приложении PowerPoint (разностный экземпляр)« На самом деле нет, вы не можете. Недавние версии позволяют открывать несколько файлов в отдельных окнах, но есть только один экземпляр приложения. Ваше приложение может периодически запрашивать PPT для свойства Presentations.Count, возможно, поддерживать массив/список имен каждой открытой презентации для проверки. В Windows PPT может захватить событие, созданное при открытии презентаций, но, насколько я знаю, это не поддерживается в Mac PPT. –
@SteveRindsberg: В окнах его новая информация для меня. Благодарим вас за обновление и в Mac PPT поддерживаем только несколько событий. В ppt Application.PresentationOpen Event есть одно событие. Я думаю, что он даст ответ, когда откроется каждая презентация. Но это событие не поддерживается в версии Mac. Есть ли другой способ определить, когда презентация открыта? Что-нибудь вроде мониторинга активности или что-то в этом роде? –