• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

scripte triggern?

rev.angeldust

Granny Smith
Registriert
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
 

NSObject

Braeburn
Registriert
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
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
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ß
 

rev.angeldust

Granny Smith
Registriert
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?
 

NSObject

Braeburn
Registriert
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 ...
 

NSObject

Braeburn
Registriert
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).
 

rev.angeldust

Granny Smith
Registriert
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.
 

NSObject

Braeburn
Registriert
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 ...

Anhang anzeigen powersourcescr..zip

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 ;) )
 

rev.angeldust

Granny Smith
Registriert
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?