How My Heart Sings

Sun, 14 Sep 2008

フォルダにパスワードをかけて管理する

AppleScriptは書き方にクセがあるので、集中して書かないとすぐ書けなくなるのです。ということで、Folder Actionを使って、フォルダにパスワードロックをかける、というのを書こうと思いたちまして…でわさっそく。

…ところが、フォルダを開けなくする、というのがそもそも上手くいきません。妥協点として、フォルダは開けちゃうけどすぐ閉じちゃうよ、一瞬だし良く見えなかったよね、ね?という感じで、以下のように書いてみました。

on opening folder this_folder
        
        tell application "Finder"        
                close every Finder window
                display dialog "Enter Password." default answer "" buttons {"OK"} default button "OK"
                set aPass1 to text returned of result
                set aPass2 to "pass" as string
                if not aPass1 = aPass2 then
                        beep
                        display dialog "Password does not match." buttons {"OK"} default button "OK" with icon stop
                        --close this_folder
                        make new Finder window
                        set target of Finder window 1 to home
                        set bounds of Finder window 1 to {10, 48, 1671, 893}
                        set (icon size of icon view options of window 1) to 96
                else
                        make new Finder window
                        set target of Finder window 1 to this_folder
                        set bounds of Finder window 1 to {10, 48, 1671, 893}
                        set (icon size of icon view options of window 1) to 96
                end if
                
                
        end tell
end opening folder

スクリプトがアタッチされたフォルダを開こうとすると、一瞬フォルダは開くけれどすぐ閉じてしまう。パスワードを要求するダイアログが表示され、あらかじめ決められたパスワードと入力されたパスワードが異なっていた場合は、何事もなかったようにホームフォルダを開く。入力されたパスワードが一致していれば、開こうとしたフォルダが開く。ウィンドウのサイズやら何やらは個人的な話しですが、これで目的は達成している…のかな。フォルダを開けなくする方法をご存じの方はお教えください。

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Comments

Posted by やました at Mon Sep 15 02:10:07 2008
ちょっと汎用的に改良。親ウインドウとその大きさを覚えておいて復元するようにしました。

…む、スペースで整形したのが刈り取られてしまう…

on opening folder aFolder

tell application "Finder"
set aParentFolder to container of aFolder
set aBounds to bounds of window 1
--close every Finder window
close Finder window 1
--set visible of processes whose frontmost to false
display dialog "Enter Password." default answer "" buttons {"OK"} default button "OK"
set aPass1 to text returned of result
set aPass2 to "pass" as string
if not aPass1 = aPass2 then
beep
display dialog "Password does not match." buttons {"OK"} default button "OK" with icon stop
make new Finder window
set target of Finder window 1 to aParentFolder
set bounds of Finder window 1 to aBounds
else
make new Finder window
set target of Finder window 1 to aFolder
set bounds of Finder window 1 to aBounds
end if
end tell

end opening folder
Posted by やました at Mon Sep 15 02:23:56 2008
む、初めてこれって良いかも、と思えるAppleScriptを書けたような気がする…

Add Comment...

スパム対策のため、一ヶ月を経過したエントリにはコメントを書き込めないのです…後、http:と書くこともできません。

Name:

Comment:

Le violon intérieur....
Yasuo Yamashita
vaiorinnhiATTOnaDOTrimDOTorjye-pi-
Y.A.S.U.O Ytterbium Artificial Sabotage and Utility Organism Y.A.S.U.O Yelling Abomination from the Sunless Underground Oasis

Pyblosxom and plugins. For detail, see http://viole.sakura.ne.jp/blosxom/blosxom.cgi/plugin_info