2014-02-23 82 views
0

我正在嘗試爲Mac App Store創建一個應用程序,用於在用戶設置時間後關閉/休眠Mac。我曾嘗試使用AppleScript,但如果我要在沙盒模式中使用它,那麼這將不起作用,我曾嘗試向Google提供解決方案,但似乎無法解決此問題。以編程方式關閉或睡眠沙盒應用程序Mac

希望有人能給我一個提示或鏈接到相關文件。

編輯:使它更精確到我的願望。

+0

你可以使用:abort(); – klcjr89

+0

我不認爲abort()會關閉或從我的應用程序中休眠Mac,而這正是我試圖完成的任務。 – Malmo

+0

你只提到關閉或睡覺的應用程序,而不是實際的計算機,所以我不知道。 – klcjr89

回答

0

有沒有辦法做到這一點。你可能試圖獲得一個暫時的例外,通過BSD層運行「關機」或「暫停」,但我懷疑這樣的應用程序會通過App Store審查,因爲這些任務需要超級用戶/管理員權限。

0

我寫了一個腳本。但我不知道它是否仍然有效。也許它至少給了你一條線索。睡眠仍然有效 - 如果程序阻止關機,關機可能會導致問題。

(不是最漂亮的代碼,但它爲我工作。)

#/bin/sh 
#v1.0.0 
#by Sapphire 

echo "-----------------------------------------------------" 
echo "*     Sleep Timer     *" 
echo "-----------------------------------------------------" 
echo "Please enter option: Sleep '1' or shutdown '0'" 
echo -n "Option: " 
read option 
while : 
do 
if [ $option -eq 1 -o $option -eq 0 ] 
    then 
     break 
fi 
echo "<<ERROR: Only number: 1 or 0 allowed...>>" 
echo "Please rnter option: Sleep '1' or shutdown '0'" 
echo -n "Option: " 
read option 
done 
echo "Please enter countdown (min):" 
echo -n "Minutes: " 
read shutDown 
while : 
do 
    if [ $shutDown -gt 0 -a $var -eq $var 2> /dev/null ] 
     then 
      break   
    fi 
    echo "<<ERROR: Positive number expected...>>" 
    echo "Please enter countdown (min):" 
    echo -n "Minutes: " 
    read shutDown 
done 

echo "*****************************************************" 

echo "Counter has been started" 
echo "'/!\ Kill countdown with CTRL-C /!\'" 
echo -n "Envoking command in: " 
date +"%H:%M %Z" 
echo "*****************************************************" 
if [ $option -eq 0 ] 
then 
    echo "Shutdown in: " 
fi 
if [ $option -eq 1 ] 
then 
    echo "Sleep in: " 
fi 
echo -e "\n  *------------------------------*  " 

barCounter=0; 
counter=0 
((timeBarSize=$shutDown * 2)) 
bar="||||||||||||||||||||||||||||||" 
barEmpty="        " 
((flag=0)) 
for ((i=shutDown*60;i>=0;i--)); 
do 
    if ((counter >= timeBarSize)) 
    then 
    ((counter=0)) 
    ((barCounter=$barCounter + 1)) 
    fi 
    ((counter=$counter + 1)) 
    ((timehh=$i/3600)) 
    ((timemm=$i/60 - timehh*60)) 
    ((timess=$i - timemm*60 - timehh*3600)) 
    if ((flag == 1)) 
    then 

    echo $(tput cuu1)$(tput el)$(tput cuu1)$(tput el)$(tput cuu1)$(tput el)$(tput cuu1)$(tput el)$(tput cuu1) 

    fi 
    ((flag=1)) 
    echo -e "  |   $timehh:$timemm:$timess   |" 
    echo -e "\r  *------------------------------*  " 

    echo -e "\r  *${bar:0:$barCounter}${barEmpty:$barCounter:30}*  " 
    echo -e "\r  *------------------------------*  " 

    sleep 1; 
done 

if [ $option -eq 1 ] 
then 
    echo "Going to sleep..." 
    sleep 1 
    osascript -e 'tell application "System Events" to sleep' 
elif [ $option -eq 0 ]; 
then 
    echo "Shutting down..." 
    sleep 1 
    osascript -e 'tell application "System Events" to shut down' 
else 
    echo "No valid command found... doing nothing!" 
fi 

我也不得不加入這在我「的/ etc/sudoers文件」文件(注意,如果你不知道如何處理這個文件! - >谷歌):

# Custom privilege 
myUser ALL=NOPASSWD: /Users/myUser/Documents/sleepTimer.sh 
相關問題