2011-03-30 5 views
1

우리는 사용자가 로그인 할 때 표시 대화 상자를 팝업하는 AppleScript 편집기로 만든 간단한 .app를 가지고 있습니다. 문제는 많은 사용자가 상자를 무시하고 "확인"을 눌러 닫지 않는 것입니다. 열린 채로두면 사용자가 컴퓨터에서 로그 오프하지 못하게됩니다.사용자 로그 아웃 방지에서 대화 상자 방지?

대화 상자가 로그 오프 프로세스를 유지하지 못하게 할 방법이 있습니까?

답변

2

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

두 번째 해결책은 약간 해키라고 생각하지 않습니까? ;-) BTW, 로그 아웃 훅의 가장 큰 문제점은 여러 가지 방법으로 로그인 스크립트를 무제한으로 가질 수 있다는 점에서 하나만 가질 수 있다는 것입니다. – Mecki

+0

예, 확실히 해킹입니다. 호출하는 스크립트가 다른 스크립트를 호출하면 많은 로그 아웃 스크립트를 가질 수 있습니다! 내 logout 명령은 내가 필요한만큼 많은 일을 할 수있는 곳에서 applescript를 호출합니다. – regulus6633

0

5 분 후에 AppleScript 코드를 수정하여 대화 상자를 자동으로 닫지 않는 이유는 무엇입니까? 시스템에 하드 로그 오프를 "해킹"하는 것보다 훨씬 쉬울 것입니다.

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

이 대화 상자는 예를 들어 5 분 후에 자동으로 닫힙니다. 당신이 당신의 질문에서 지적했듯이, 사용자가 그것을 읽도록 충분히 길고, 다른 사람들은 그것을 무시한다면 어쨌든 그것을 무시합니다. 내가 생각할 수있는

0

불행히도, 표시 대화 상자에는 항상 읽지 않고 "포기"를 사용하여 독자적으로 알림을 표시하지 않는 한 사용자가 사라지도록 조치해야합니다.

읽을 필요가 있다고 가정하고 컴퓨터를 제어 할 수 있다면 Growl을 사용하여 알림을 표시 할 수 있습니다.

유휴 처리기에 표시 대화 상자를 넣을 수 있으며 실제로 "확인"을 클릭하면 스크립트가 종료됩니다. 그들이 "ok"를 클릭하지 않는다면 다른 응답에 설명 된대로 "give give up"을 사용하여 몇 초 후에 원하는 것을 버리고 다음 유휴 상태에서 다시 팝업하십시오. 이것은 매우 귀찮을 수 있으며 대화 상자가 올라간 상태에서 로그 아웃하는 경우에도 로그 아웃을 차단할 위험이 있습니다.

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