Skip to main content
replaced http://apple.stackexchange.com/ with https://apple.stackexchange.com/
Source Link

With the help of Growl's documentation about AppleScript support and a little discussion with Bart ArondsonBart Arondson and Elliot BElliot B in the commentscomments onto the question I've come up with the following AppleScript.

With the help of Growl's documentation about AppleScript support and a little discussion with Bart Arondson and Elliot B in the comments onto the question I've come up with the following AppleScript.

With the help of Growl's documentation about AppleScript support and a little discussion with Bart Arondson and Elliot B in the comments onto the question I've come up with the following AppleScript.

Source Link
gentmatt
  • 50.2k
  • 52
  • 198
  • 271

With the help of Growl's documentation about AppleScript support and a little discussion with Bart Arondson and Elliot B in the comments onto the question I've come up with the following AppleScript.

I've saved this script as an application agent which you can add to your login items in System Preferences → Users & Groups → Login Items.

Basically, this application works by detecting if a unique executable related to using the camera is being accessed. Whenever the executable is accessed, the application will notify about it to Growl:

enter image description here

#Download

It's important to know that this script monitors access to the executable...

/System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC

##Full script

-- check if growl is running in order to avoid the "Choose Application" dialog
tell application "System Events"
    set isRunning to (count of (every process whose bundle identifier is "com.Growl.GrowlHelperApp")) > 0
end tell

-- store time of last iSight access
global lastopened
set lastopened to do shell script "ls -lu /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC | awk '{print $6,$7,$8}'"

-- make the application ready for use with growl
if isRunning then
    tell application id "com.Growl.GrowlHelperApp"
        
        -- make a list of all the notification types that this script will ever send
        set the allNotificationsList to ¬
            {"iSight access monitor"}
        
        -- register the script with growl
        register as application ¬
            "iSight access monitor" all notifications allNotificationsList ¬
            default notifications allNotificationsList ¬
            icon of application "FaceTime"
        
        -- send the first notification right after the application is started
        notify with name ¬
            "iSight access monitor" title ¬
            "iSight access monitor" description ¬
            "last iSight access: 
" & lastopened application name "iSight access monitor"
    end tell
end if

-- monitoring routine: checks every 10s if the VDC executable has been accessed
on idle
    tell application id "com.Growl.GrowlHelperApp"
        set newopen to do shell script "ls -lu /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/Resources/VDC.plugin/Contents/MacOS/VDC | awk '{print $6,$7,$8}'"
        if (newopen is not equal to lastopened) then
            notify with name ¬
                "iSight access monitor" title ¬
                "iSight access monitor" description ¬
                "new iSight access: 
" & newopen application name "iSight access monitor"
            set lastopened to newopen
        end if
    end tell
    return 10 -- interval in seconds
end idle