AppleScriptでデスクトップのサイズを取得する
2011-12-14追記
[twitter:@Piyomaru] さんに教えていただき、system_profiler SPDisplaysDataTypeから取る方法で落着しましたー
が、bounds of window of desktopで取れないのは未だ謎です。。。
手元のMac OS X 10.7.1, AppleScript 2.2.1にて、bounds of window of desktopでデスクトップのサイズが取れない件。雪なしLeopardのときはこれで取れたんだけど。。。と、思って試してみたら、Leopardでもダメになってました。。。
仕方ないんで、ぐぐって
- Safariを起動してJavaScript使って取得する
- shellでdefaults readを実行して取得する
- ただしdefaults readだと、外部モニタが繋がってるかどうかわからないので、外部モニタあり/なしの条件分岐ができない
って方法ではできたんですが、なんかいい方法ないのすかね?というお話です。
global screenWidth global screenHeight -- ★これがよさげー tell (do shell script "/usr/sbin/system_profiler SPDisplaysDataType | grep Resolution | tail -n 1") to set {screenWidth, screenHeight} to {word 2, word 4} display dialog "system_profiler: " & screenWidth & "x" & screenHeight tell application "Safari" -- OK set screenWidth to (do JavaScript "screen.availWidth" in document 1) set screenHeight to (do JavaScript "screen.availHeight" in document 1) display dialog "Safari: " & screenWidth & "x" & screenHeight end tell -- うごかん -- error "System Events でエラーが起きました:scroll area 1 of process \"Finder\" を取り出すことはできません。正しくないインデックスです。" number -1719 from scroll area 1 of process "Finder" try tell application "System Events" to set {rightLimit, bottomLimit} to size of scroll area 1 in process "Finder" display dialog rightLimit & "x" & bottomLimit on error number ex display dialog "[ERROR] scroll area of Finder: " & ex end try tell application "Finder" -- OK だけど、外部ディスプレイがつながっているかどうかわからない set screenWidth to word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Width | head -n 1") as number set screenHeight to word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Height | head -n 1") as number display dialog "shell: " & screenWidth & "x" & screenHeight -- NG -- error "Finder でエラーが起きました:bounds of window of desktop を取り出すことはできません。" number -1728 from bounds of window of desktop try set theScreen to bounds of window of desktop set screenWidth to item 3 of theScreen set screenHeight to item 4 of theScreen on error number ex display dialog "[ERROR] window of desktop: " & ex end try end tell