1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

scripte triggern?

Dieses Thema im Forum "AppleScript" wurde erstellt von rev.angeldust, 01.03.10.

  1. rev.angeldust

    rev.angeldust Granny Smith

    Dabei seit:
    29.04.09
    Beiträge:
    14
    hallo!

    Ich bin nicht so wahnsinnig fit im Mac-OS scripten aber ich bin immer wieder über die Möglichkeiten und Konsistenz dieses Systems überrascht.

    Jetzt also mal eine Frage: gibt es eine Möglichkeit bei bestimmten Ereignissen (speziell jetzt z. B. wenn ich den Mac vom Strom trenne oder ihn auflade / den Stecker einstecke) scripte auszuführen?
    Es gibt gewisse Ordnerereignisse, die sich scripten lassen, aber darüber hinaus habe ich nichts gefunden.
    Gewisse Programme bieten auch Flags in ihren Funktionen an, die sie setzen, wenn sie etwas ausführen. Hat das System sowas auch??

    Vielen Dank für eure Hilfe!

    Grüße

    Angeldust
     
  2. NSObject

    NSObject Braeburn

    Dabei seit:
    24.04.09
    Beiträge:
    44
    Hallo Angeldust,

    es ist zwar möglich, sich über manche Ereignisse wie den Wechsel der Stromversorgung bei einem MacBook (Pro) in einem Programm benachrichtigen zu lassen - nur leider ist das meines Wissens nach in reinem AppleScript nicht möglich. Es wäre aber durchaus möglich, eine kleine Erweiterung zu programmieren, die in solchen Fällen ein Script startet. Vielleicht gibt's das auch schon für den Stromwechsel? Ich weiss zum Beispiel, dass es z.B. Programme gibt, mit denen du beim Wechsel in ein anderes WLAN Scripte ausführen kannst.

    Grüße

    NSObject
     
  3. sedna

    sedna Pomme Etrangle

    Dabei seit:
    22.10.08
    Beiträge:
    911
    Hallo!
    Mit reinem AppleScript nicht, aber unter Zuhilfenahme von einem Shell Skript ....

    Code:
    on idle
    	try
    		set x to do shell script "pmset -g | grep 'Battery Power'"
    		if x contains "*" then
    			-- tu dies
    		else
    			-- tu das
    		end if
    		return 2
    	end try
    end idle
    Siehe auch hier

    Gruß
     
  4. rev.angeldust

    rev.angeldust Granny Smith

    Dabei seit:
    29.04.09
    Beiträge:
    14
    Deine Lösung ist nett, würde aber bedeuten, dass ständig ein Programm abläuft.
    Finde ich etwas unelegant (ressourcentechnisch) aber trotzdem wäre es schön, wenn ein Event das triggern würde, und nicht wenn ich ein Programm ständig abfragen lassen muss!
    Also mal Klartext: Mac hat von sich aus keine Event-Trigger, die soetwas leisten würden?
     
  5. NSObject

    NSObject Braeburn

    Dabei seit:
    24.04.09
    Beiträge:
    44
    Doch - vom Betriebssystem und vom Finder etc. werden zu allen möglichen Ereignissen Notifications verschickt, für die sich ein Programm registrieren kann. Eine Schleife ist dafür nicht erforderlich. Nur geht das eben nicht in einem reinen AppleScript, wie sedna schon sagte. Das kann nur ein 'richtiges' Programm. Auch das mit dem Wechsel der Stromversorgung ist dann nicht allzu kompliziert. Ich kann gern später noch was Genaueres dazu schreiben. Muss jetzt aber erst mal weg ...
     
  6. NSObject

    NSObject Braeburn

    Dabei seit:
    24.04.09
    Beiträge:
    44
    hier noch ein paar Infos ...

    In einem Cocoa-Programm kannst du dich schon über eine ganze Menge Ereignisse informieren lassen - zum Beispiel bietet NSWorkSpace folgende Notifications (sind, denke ich weitgehend selbsterklärend):
    NSWorkspaceDidLaunchApplicationNotification
    NSWorkspaceDidMountNotification
    NSWorkspaceDidPerformFileOperationNotification
    NSWorkspaceDidTerminateApplicationNotification
    NSWorkspaceDidWakeNotification
    NSWorkspaceDidUnmountNotification
    NSWorkspaceSessionDidBecomeActiveNotification
    NSWorkspaceSessionDidResignActiveNotification
    NSWorkspaceWillLaunchApplicationNotification
    NSWorkspaceWillPowerOffNotification
    NSWorkspaceWillSleepNotification
    NSWorkspaceWillUnmountNotification

    Etwas schwieriger wird's bei dem Wechsel der Stromversorgung. Dazu gibt es auch eine Notification - um sich dafür zu registrieren, muss man aber das IOKit.framework bemühen (IOPSNotificationCreateRunLoopSource() ).

    Wenn du den Pfad der reinen AppleScripterei verlassen und selbst was basteln möchtest, werde ich gerne versuchen, dabei etwas zu helfen - ansonsten würde ich dir dazu raten, erst mal zu schauen, ob es schon fertige Erweiterungen für AppleScript gibt, die diesen Zweck erfüllen, wie ich bereits anfänglich vorgeschlagen hatte.
    Schau z.B. mal bei www.macscripter.net (-> scripting additions).
     
  7. rev.angeldust

    rev.angeldust Granny Smith

    Dabei seit:
    29.04.09
    Beiträge:
    14
    Ich hab mir schon gedacht, dass Cocoa da theoretisch mehr kann als Applescript! Aber leider habe ich von Cocoa-Programmierung absolut keinen Schimmer! Ein gutes Tutorial wäre also wirklich angebracht (mit Tutorial meine ich eben eine Einführung + weiterführende Erklärung).
    Das Problem ist, dass man zu Cocoa (soweit ich etwas gefunden hab) entweder nur so "hello world" zeug bekommt oder dann die ganz abgefahrenen Sachen, mit denen man auch nicht wirklich viel anfangen kann...

    edit: bei Macscripter habe ich leider keine addition gefunden, die das leisten würde.
     
  8. NSObject

    NSObject Braeburn

    Dabei seit:
    24.04.09
    Beiträge:
    44
    hmmm - für den Anfang mit 'absolut keinem Schimmer' ist das vielleicht nicht ganz das richtige Übungsprojekt. Ich habe dir mal was gebastelt, auf das du dann aufbauen kannst, wenn sich der 'Schimmer' eingestellt hat ;) ...
    Im angehängten zip findest du ein kleines Programm, das, wenn du es einmal gestartet hast, immer ein Script ausführt, wenn du von Netz auf Batterie wechselst und ein anderes im umgekehrten Fall. Die Scripte liegen im Programm-Bundle und du kannst sie ganz normal mit dem Script Editor nach deinen Wünschen bearbeiten (musst das Programm aber neu starten, wenn du was geändert hast).
    Das Programm läuft nur im Hintergrund - hat also kein Dock Icon und kein Menü oder Fenster. Du kannst es über 'killall powersourcescript' im Terminal beenden.

    Das Xcode-Projekt mit allen Source Codes ist auch dabei - ich hatte allerdings keine Zeit es zu kommentieren. Schrib' mir einfach ne Mail, wenn du dazu noch Infos haben möchtest ...

    Den Anhang powersourcescr..zip betrachten

    Ich hoffe, das hilft dir weiter. Zum Thema Einstieg in Objective-C mit Cocoa u. Ä. gab's hier schon einige Threads.

    Nachtrag - ich habe das Progrämmchen nur unter 10.5 getestet - sollte aber unter 10.6 auch laufen (hoffe ich ;) )
     
  9. rev.angeldust

    rev.angeldust Granny Smith

    Dabei seit:
    29.04.09
    Beiträge:
    14
    wow! vielen Dank dass du dir die Arbeit gemacht hast.
    Aus irgendwelchen Gründen will es nicht so recht klappen, aber wenigstens kann ich mehr oder weniger nachvollziehen, was du da angestellt hast!

    Mir ist gerade aufgefallen, dass Growl schon notificiations macht, wenn man den Stecker zieht bzw reinsteckt (mit dem hardwaregrowl oder wie das heisst). kann ich nicht einfach growl beibringen ein script auszuführen?
     

Diese Seite empfehlen