2011-03-30 58 views
1

我們有一個用applescript編輯器製作的簡單.app文件,當用戶登錄時會彈出一個顯示對話框。問題是許多用戶忽略了這個框,並且不按「ok」關閉它。如果保持打開狀態,則會阻止用戶註銷計算機。防止對話框阻止用戶註銷?

有沒有辦法阻止對話框阻止註銷進程?

回答

2

兩件事我能想到的:1)你可以把一個對話框上的命令「之後放棄」,所以,這是一個時間後自動關閉,例如5數秒

display dialog "Hello" giving up after 5 

或者你可以自己寫一個註銷腳本。該腳本將在用戶註銷時運行。像這樣的東西會奏效。

tell application "System Events" 
    if exists process "ApplicationName" then 
     set itExists to true 
    else 
     set itExists to false 
    end if 
end tell 

if itExists then 
    tell application "ApplicationName" to activate 
    tell application "System Events" to keystroke return 
end if 

Google針對「註銷掛鉤」來查找如何在註銷時運行腳本。

+0

第二種解決方法有點不好意思,您不覺得嗎? ;-)順便說一句,註銷鉤的最大問題是,你只能擁有一個,而通過各種方法擁有無限量的登錄腳本是沒有問題的。 – Mecki 2011-03-30 18:05:47

+0

是的,這是肯定的哈克。如果您調用的腳本調用其他腳本,則可以有多個註銷腳本!我的註銷命令調用了一個applescript,我可以根據需要做很多事情。 – regulus6633 2011-03-31 15:15:42

0

請問我爲什麼不只是修改AppleScript代碼後自動關閉對話框,比如說5分鐘?這肯定比「黑客入侵」系統更容易。

display dialog "Hello World" buttons "Ok" giving up after (5 * 60) 

此對話框將在5分鐘後自動關閉。如果你真的關心它,而其他人無視它,就像你在你的問題中指出的那樣,用戶閱讀它就足夠長。

0

不幸的是,顯示對話框始終需要用戶採取措施才能消失,除非您自己使用「放棄之後」通知自行消失,而不必一定閱讀它。

假設您需要它們來閱讀它,並且如果您可以控制將要啓動的計算機,則可以使用Growl來顯示您的通知。

它發生在我身上,你可以把顯示對話框放在空閒處理程序中,如果他們確實點擊「ok」,腳本就退出;如果他們沒有點擊「確定」,則按照其他答案中的描述使用「放棄後」,以便在想要的秒數後消失,然後在下一次空閒時重新彈出。這可能非常煩人,並且如果在對話框啓動時它們發生註銷,仍然存在阻止註銷的風險。

on idle 
    --display the alert for 7 seconds 
    display alert "Very Important Message" giving up after 7 
    if the button returned of the result is "ok" then 
     quit 
    end if 

    --idle for 90 seconds 
    return 90 
end idle 
0

這個工作對我來說,強制用戶註銷。在Mac OS X中完全禁用「重新打開Windows時重新打開」並註銷確認

tell application "System Events" 
    keystroke "Q" using {command down, option down, shift down} 
    quit 
end tell