2014-07-07 7 views

Odpowiedz

0

tak tak nie jest sposobem na to, co chcesz

o to tutorial here

to uproszczona wersja, że ​​robi to, co chcesz, ale musisz go zapisać jako aplikację i przeciągnij plik na nim.

on open theItems 
    display notification "Open stackoverflow ?" with title "Stackoverflow" 
    delay 2 
end open 

on run 

    tell application "Safari" 
     tell window 1 
      set current tab to (make new tab with properties {URL:"http://www.stackoverflow.com"}) 
     end tell 
    end tell 
end run 
+0

Nie użyłbym tej uproszczonej wersji. Konieczność przeciągnięcia pliku na kroplę w celu aktywacji powiadomienia z pewnością nie spełni jego oczekiwań. Nie mogę wymyślić żadnej sytuacji, która byłaby przydatna. Po prostu chcesz uruchomić procedurę obsługi, która zgłasza powiadomienie, chyba że wykryje, że została wywołana przez opcję Powiadomienie, a jeśli tak, uruchom katalog lub adres URL. – jweaks

+0

Nie jestem pewien, w jaki sposób będą wyświetlane pierwsze powiadomienia. Jednak ta odpowiedź pokazuje, jak używać zdarzenia kliknięcia powiadomienia displayowego. – mcgrailm

+0

No cóż, z wyjątkiem tego, że "nie pokazuje, jak używać zdarzenia kliknięcia wyświetlacza", chyba że zainicjujesz powiadomienie, przeciągając plik na kropelka. Program OP chce programowo zainicjować, jak wskazano w wywołaniu osascript.Ale może zmodyfikować jeden z macosxautomation, aby to zrobić, ale wszystko będzie musiało być w programie obsługi przebiegu. – jweaks

4

Program obsługi zostanie wywołany tylko wtedy, gdy skrypt zostanie zapisany jako aplikacja, najlepiej jako aplikacja typu open-open. W każdym razie aplikacja musi nadal działać, gdy ktoś kliknie powiadomienie. Nie otrzymasz tego zachowania z prostego łańcucha znaków.

Możesz dostać osascript, aby uruchomić skompilowany plik skryptu (który może przechowywać właściwości w sposób uporczywy), ale nadal musisz rozróżnić między zdarzeniem uruchomienia, które dzieje się po uruchomieniu skryptu, a zdarzeniem uruchamiania, które zostanie wywołane, gdy ktoś klika powiadomienie.

Proponuję tutaj kilka rozwiązań.

  • Użyj biblioteki Pythona aby wystrzelić powiadomień i zapomnieć o AppleScript/OSA. Można znaleźć informacje i różne rozwiązania w tym linkiem stackoverflow: Python post osx notification

  • Skonfiguruj pozostaje otwarty AppleScript aplikację jako swego rodzaju „serwera powiadomień” i wysłać wiadomość do tym (ewentualnie z OSAscript , chyba że możesz wysłać zdarzenie z jabłkami surowymi do "serwera" z Pythona), jeśli chcesz ustawić stosunek powiadamiania. Jest to trudne i wydaje się zbyt złożone w porównaniu z moją pierwszą sugestią. W szczególności może zajść potrzeba zmiany ustawień prywatności (szczególnie w Mavericks lub później), aby umożliwić OSAscript dostęp do zdarzeń systemowych.

Oto kilka linków, które mogą kierować Cię z drugim podejściem, ale naprawdę rzeczą pierwsza propozycja będzie Ci dalej, przy mniejszej ilości łez:

http://jacobsalmela.com/bash-script-enable-access-assistive-devices-programmatically-os-x-mavericks-10-9-x-simulate-keystrokes/

http://support.apple.com/kb/HT6026?viewlocale=en_US&locale=en_US

+0

Również to może być przydatne: https://github.com/alloy/terminal-notifier – brennanyoung

Powiązane problemy