SSブログ

SafariウインドウのView部分のみのスクリーンショットを撮る [AppleScript辞書はつくれるか?]

Safariの最前面のウインドウの上部にある、URL や お気に入り や タブ などを取り除いた「ビュー」の部分だけスクリーンショットを撮ってみる。

ss1.jpg


なんのために?なんて思うでしょうが...

今回はSafariウインドウの上部を取り除いたビュー部分のみが撮影できないか?とやってみました。


 

use scripting additions

use framework "Foundation"

 

 

on run

 

set imageFile to do shell script "echo $HOME/Desktop/imgName.png" --output

my mainScript()

 

end run

 

on mainScript()

tell application "Safari"

activate

set {x1, y1, x2, y2} to bounds of window 1

set viewOriginY to my SafariViewOrigin()

set y3 to y1 + viewOriginY

set {w1, h1} to {(x2 - x1), (y2 - y3)}

end tell

 

set commandText to "screencapture -R" & x1 & "," & y3 & "," & w1 & "," & h1 & " '" & imageFile & "'"

do shell script commandText

return

end mainScript

 

on SafariViewOrigin()

set LogList to ""

tell application "System Events"

tell menu 1 of menu bar item "表示" of menu bar 1 of process "Safari"

set objList to (name of (every UI element))

repeat with i from 1 to (count of objList)

set oneObj to (item i of objList)

if oneObj is not missing value then set LogList to LogList & oneObj & return

end repeat

end tell

end tell

 

set viewOriginY to 38 -- {origin: 0, urlbar:+38, bookmark:+23, tabbar:+23}

if LogList contains "お気に入りバーを非表示" then set viewOriginY to viewOriginY + 23

if LogList contains "タブバーを非表示" then set viewOriginY to viewOriginY + 23

return viewOriginY

end SafariViewOrigin



なぜかrunハンドラや、細かくハンドラを分けていますが、applescript_obj-Cの保存時にエラーを起こさないための逃げ道です。

Object-Cの命令文から変数に代入するなどの式が書かれていると、問題が起きるそうです。

代入する変数をローカル変数にするため、

local |変数| でローカル変数を宣言にするか、ハンドラの中に入れることによって回避できるようです。

 

 

さて本題、

SafariViewOrigin() ハンドラの部分では、Safariの最前面にあるウインドウの大きさを取得し、System Eventsを経由してSafariのメニューから「編集」メニューの中身を得ます。

その中に『お気に入りバーを非表示』(つまり、お気に入りバーが表示されている)と『タブバーを非表示』(つまり、タブバーが表示されてる)を検出します。

ビューの位置はウインドウ上部から URLバー(常時表示)部分を避け、表示されていたら『お気に入り』と『タブバー』を避けてやればたどり着くと言う考えで、その避ける分をReturnで返り値としています。

 

上記の返り値を受け取り、スクリーンショットを撮影させています。

 

そんだけ。

 

問題は、画面から出た部分は切り落とされてしまうんですけどね。



ここの部分だけの結果はこうなります。

ss2.jpg

nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。