A few weeks ago I linked to a Macworld article that described how to restart Safari's Flash plugin without quitting the browser, and said the following:
You guys aren't already doing this? I actually take it a step further and use a LaunchBar action (that I named "kf") to kill the plugin with just a few keystrokes (i.e., I saved
do shell script "killall -9 WebKitPluginHost"tokf.scptin LaunchBar'sActionsfolder).I normally would refer to my Use LaunchBar to execute, in the "background," commands via a shell piece, and tell you to alias
killall -9 WebKitPluginHostto "kf," butdo shell scriptuses the Bourne shell, which doesn't recognize aliases. Actually, you maybe could use my linked-to solution together with TextExpander (i.e., have "kf" expand to "killall -9 WebKitPluginHost").
Since making those comments I've grown the idea a bit and now my "kf" LaunchBar action checks to see which browser -- Safari or Chrome -- is having trouble with Flash, and kills the appropriate plugin. (In either case, the plugin is restarted automatically whenever you (re)load a page with Flash.)
Here's my updated AppleScript:
tell application "System Events" to set webBrowser to name of first process
where frontmost is true
if webBrowser is "Safari" then
do shell script "killall -9 WebKitPluginHost"
else if webBrowser is "Google Chrome" then
do shell script "ps ux | grep -E '[F]lash Player Plugin
for Chrome' | awk '{ print $2; }' | xargs kill"
end if
Because it's very likely you'll invoke the script while cursing at your unresponsive browser, the script simply checks to see which is the frontmost app, and if the frontmost app is either browser, then it kills that browser's Flash plugin. If neither browser is the frontmost app, then the script effectively does nothing. (No, I don't usually run both browsers at once, but by coding it this way I have to remember just one command — "kf" — irrespective of which browser I'm currently using.)
I had every intention of killing Chrome's Flash plugin the same way I do Safari's, but I just couldn't figure out a way to use "Shockwave Flash (Chrome Plug-In Host)" (i.e., its Process Name as reported by Activity Monitor), which is why I had to resort to the slightly(!) less elegant commands you see above.
As ever, if you've any questions or tips on how to make this faster, smaller, etc., please let me know.