2013-12-10 8 views
7

Sto usando AppleScript per bloccare il Mac da un dispositivo esterno (trigger) e sbloccarlo da questo stesso dispositivo.La tastiera non risponde dopo aver sbloccato OS-X (Mavericks) usando AppleScript

Il blocco funziona in modo ottimale ma quando si sblocca la tastiera ei pad del Mac non rispondono. La cosa strana è che quando muovo la mousse dopo il blocco e ottengo la password di accesso se inserisco la password lo sblocco rende la tastiera reattiva e solo allora.

È un tipo di impostazioni di protezione di cui non sono a conoscenza? Come potrei risolverlo?

Ecco lo script che sto utilizzando:

Lock:

tell application "System Events" 
tell security preferences 
set require password to wake to true 
end tell 
end tell 

activate application "ScreenSaverEngine" 

Unlock:

tell application "System Events" 
tell security preferences 
set require password to wake to false 
end tell 
end tell 

tell application "ScreenSaverEngine" to quit 

Please help Sono disperata. Inoltre, se hai un altro metodo per bloccare/sbloccare il mio Mac usando il codice, mi piacerebbe provarlo!

Grazie!

UPDATE: Per essere chiari quando si rimuove il codice di impostazione della password (richiedere la password), il problema non viene visualizzato. Significato rimozione di quei 3 linee:

tell security preferences 
    set require password to wake to true 
end tell 

non ha questo problema, questo è il motivo per cui penso che potrebbe essere qualche cosa di sicurezza che non sono a conoscenza.

UPDATE (26 dicembre 2013): Non ho trovato nessuna soluzione e il bounty è terminato, quindi quello che sto facendo è inserire la mia password usando ActionScript (forse questo potrebbe aiutare gli altri che hanno lo stesso problema). Se hai un'altra soluzione mi piacerebbe sapere.

risposta

3

Prova qui sotto per bloccare lo schermo, sto usando lo stesso e nessun problema durante il blocco o lo sblocco. Spero che questo ti aiuti.

try 
tell application "System Events" 
    set the process_flag to (exists process "ScreenSaverEngine") 
end tell 
if the process_flag is true then 
    ignoring application responses 
     tell application "System Events" to quit 
    end ignoring 
else 
    set the target_app to ((path to "dlib" from system domain as string) & "Frameworks:ScreenSaver.framework:Versions:A:Resources:ScreenSaverEngine.app") as alias 
    tell application (target_app as string) to launch 
end if 
end try 
+0

Funziona ma il mio problema è con l'impostazione della password richiesta su true. Quindi quando lo faccio con il tuo codice ottengo gli stessi risultati. Significato quando si aggiunge: dire preferenze di sicurezza \ n impostata una password per uscire a true \ n end tell \ n Di seguito la seconda linea ottengo lo stesso problema. Se rimuovo quelle 3 linee dal mio codice, funziona anche come il tuo codice. Scusa se non ne ero a conoscenza. Avete qualche idea su come risolverlo? – Idan

3

Più tardi oggi potrò fare ulteriori test su una macchina Mavericks. Nel frattempo, ho una piccola teoria: hai provato questo con altri screen saver "attivi"? Dico questo perché ho un paio di screen saver che sono un po 'buggy, e so che almeno uno di loro ha bisogno di un aggiornamento per Mavericks. Quale stai usando?

[AGGIORNAMENTO:] I get Mavericks e non ho visto i problemi che hai descritto, o almeno problemi di tale gravità. Ho avuto un po 'di stranezza, forse, forse dovendo avere a che fare con il tempismo. Cosa succede se strutturi il tuo script in questo modo? Per me copre errori come "connessione non valida" (ammetto che questo è un po '"pericoloso", potrebbe essere utile stabilire un limite massimo di quante volte è necessario provare inserendo un contatore):

tell application "System Events" 
    tell security preferences 
     set require password to wake to false 
    end tell 
end tell 
set connectionValid to false 
repeat until connectionValid 
    try 
     activate application "ScreenSaverEngine" 
     set connectionValid to true 
    on error e 
    end try 
end repeat 
Problemi correlati