가능한 해결 방법은 열려있는 프레젠테이션을 루프 검사하고 이전에 열려있는 프레젠테이션과 비교하는 것입니다.
먼저이 스크립트가 실행되면 PowerPoint가 실행 중인지 확인합니다 (종료하지 않으면 -> 종료). PP가 실행되면 스크립트는 열려있는 프리젠 테이션의 수를 기록합니다.
그런 다음 스크립트는 루프를 거칩니다.이 예에서 반복 횟수는 100 회입니다 (테스트 만했지만 반복해야합니다). 각 반복마다 PP 프리젠 테이션 목록을 찾고 이전 목록과 비교합니다. 프리젠 테이션이 이전 목록에 없으면 새로운 것입니다. 열려 있습니다!
경고를 표시하는 PowerPoint를 종료하면 스크립트가 중지됩니다 (bloc 시도).
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
엘 캐피/PP 2011에서 테스트 :하지만 나는 '모든 프리젠 테이션의 이름'에서 PP 2011 년 PP 2016로 변경 아무것도 생각합니다.
'fswatch' ('homebrew '와 함께 설치)를 사용하면 PDF 파일의 파일 열기에 대한 사용자 폴더를 재귀 적으로 볼 수 있습니다. 또는'sudo opensnoop -n PowerPoint' 또는 somesuch와 함께 할 수도 있습니다. –
"Windows에서는 각 프레젠테이션을 별도의 파워 포인트 앱 (차이 인스턴스)에서 열 수 있습니다."실제로는 아니요. 최근 버전을 사용하면 개별 창에서 여러 파일을 열 수 있지만 앱 인스턴스는 하나뿐입니다. 앱이 Presentations.Count 속성에 대해 PPT를 주기적으로 질의 할 수 있으며, 점검 할 열려있는 각 프리젠 테이션 이름의 배열/목록을 유지할 수 있습니다. Windows에서 PPT는 프리젠 테이션을 열 때 발생하는 이벤트를 트랩 할 수 있지만 내가 아는 한 Mac PPT에서는 지원되지 않습니다. –
@SteveRindsberg : Windows에서, 그 새로운 정보. 약간의 이벤트 만 지원하는 Mac PPT 및 업데이트에 감사드립니다. ppt Application.PresentationOpen 이벤트에는 하나의 이벤트가 있습니다. 각 프레젠테이션이 열릴 때 콜백 할 것입니다. 그러나이 이벤트는 Mac 버전에서는 지원되지 않습니다. 프레젠테이션을 열 때 식별 할 수있는 다른 방법이 있습니까? mac 활동 모니터링 또는 무엇인가 같은 것이 있습니까? –