Programmübergreifende Aktion (Dienst) erstellen

T

trussimo

Neues Mitglied
Thread Starter
Dabei seit
07.09.2011
Beiträge
8
Reaktionspunkte
0
Hallo zusammen!

Ich würde gerne einen Dienst im Automator erstellen und für diesen einen Shortcut einstellen damit ich zb. iTunes mit "F11" leiser machen kann und mit "F12" lauter. Das wäre nämlich ganz praktisch wenn man wirklich nur bei iTunes die Lautstärke anpasen möchte und nicht die allgemeine Lautstärke die man ja mit den Sonderfunktionen der F11/F12 Tasten steuert bei den neuen (MacBook-) Tastaturen. Also wenn ich dann zusätzlich die "fn" Taste drücke, will ich nur die Lautstärke bei iTunes ändern.

Hatte jetzt auch schon selber versucht Dienste im Automator zu erstellen, die dann eben lauter oder leiser machen und die dann bei allen Programmen zusätzlich in der Menüleiste sind, damit ich auf diese immer per Shortcut zugreifen kann.

Leider scheitere ich bei dem Erstellen der Dienste. Bzw. ist es über die Dienste überhaupt möglich mein Vorhaben umzusetzen oder muss ich dafür Apple-Scripte verwenden (von denen ich leider wenig Ahnung habe)?

Also das Shortcut einstellen kann ich, nur irgendwie haben meine bisherigen Versuche diese Diensten zu erstellen, nicht funktioniert.



Vielen Dank für eure Hilfe schonmal!
Gruss, trussimo
 
Du kannst in Automator eine AppleScript Aktion hinzufügen, die etwa so aussehen könnte:

Code:
[FONT="Verdana"][size=2][b]tell[/b] [color=#0000FF][i]application[/i][/color] "iTunes" [b]to[/b] [b]set[/b] [color=#6C04D4]sound volume[/color] [b]to[/b] ([color=#6C04D4]sound volume[/color] - 10)[/size][/FONT]

sound volume geht von 0 - 100, d.h. so würde die Lautstärke in 10er Schritten leiser werden. Das kannst du natürlich auch ändern. Wenn es lauter werden soll, musst du nur - durch + ersetzen.
 
Doppel Post
 
Zuletzt bearbeitet:
Vielen Dank!
Also so gehts auf jedenfall für iTunes. Wie muss ich denn den Code abändern, damit es mir auch bei dem Sonos-System funktioniert (Sonos ist ein Musikprogramm das ich statt iTunes verwende). Denn wenn ich "iTunes" durch "Sonos Desktop Controller" ersetze funktioniert es noch nicht. Damit es klappt, soll ich die Variable Volume definieren. Können sie mir da noch bitte weiterhelfen?
 
Probier das mal:

Code:
[FONT="Verdana"][size=2][b]tell[/b] [color=#0000FF][i]application[/i][/color] "Sonos Desktop Controller"
	[b]tell[/b] [color=#0000FF][i]application[/i][/color] "System Events"
		[b]tell[/b] [color=#0000FF][i]process[/i][/color] "Sonos"
			[b]set[/b] [color=#6C04D4]value[/color] [b]of[/b] [color=#0000FF][i]slider[/i][/color] 1 [b]of[/b] [color=#0000FF][i]group[/i][/color] 1 [b]of[/b] [color=#0000FF][i]window[/i][/color] 1 [b]to[/b] (([color=#6C04D4]value[/color] [b]of[/b] [color=#0000FF][i]slider[/i][/color] 1 [b]of[/b] [color=#0000FF][i]group[/i][/color] 1 [b]of[/b] [color=#0000FF][i]window[/i][/color] 1) - 10)
		[b]end[/b] [b]tell[/b]
	[b]end[/b] [b]tell[/b]
[b]end[/b] [b]tell[/b][/size][/FONT]
 
mit diesem Code klappt es aber leider nur wenn mein derzeit geöffnetes Programm sich im selben Space befindet. Wenn ich also in einem anderem bin passiert nichts. Können sie mir das so abändern dass es auch allen Spaces funktioniert? Derzeit verwende ich 3 Spaces und im 1. Space befindet sich Sonos.
 
Das AppleScript funktioniert über GUI-Scripting, da Sonos leider Applescript nicht unterstützt. Deshalb muss immer erst in den entsprechenden Space gewechselt werden. Im Script sieht das dann so aus:

Code:
[FONT="Verdana"][size=2][color=#0000FF][b]activate[/b][/color] [color=#0000FF][i]application[/i][/color] "Sonos Desktop Controller"
[b]tell[/b] [color=#0000FF][i]application[/i][/color] "System Events"
	[b]tell[/b] [color=#0000FF][i]process[/i][/color] "Sonos"
		[b]set[/b] [color=#6C04D4]value[/color] [b]of[/b] [color=#0000FF][i]slider[/i][/color] 1 [b]of[/b] [color=#0000FF][i]group[/i][/color] 1 [b]of[/b] [color=#0000FF][i]window[/i][/color] 1 [b]to[/b] (([color=#6C04D4]value[/color] [b]of[/b] [color=#0000FF][i]slider[/i][/color] 1 [b]of[/b] [color=#0000FF][i]group[/i][/color] 1 [b]of[/b] [color=#0000FF][i]window[/i][/color] 1) - 10)
	[b]end[/b] [b]tell[/b]
[b]end[/b] [b]tell[/b][/size][/FONT]
 
Und wäre es dann möglich zu schreiben, dass der aktuelle Space X abefragt wird, dann den Code mit dem es zu Space 1 wechselt und die Lautstärke ändert und danach wieder in den Space X wechselt?

Weil über den Automator geht das ja soweit ich weiss nicht. Da kann ich nur sagen dass er danach wieder in einen bestimmten Space wechselt, aber eben nicht den aktuellen space abfrägt und danach wieder dorthin wechselt.

____

Nachtrag:

Vielen Dank nochmal für die schnellen Antworten!

Das mit den Space abfragen und wechseln wäre wahrscheinlich sowieso nicht so toll anzusehen wenn der Bildschirm dann immer hin und her switcht bei mehrmaligem Shortcut drücken hintereinander.
 
Zuletzt bearbeitet:
Das mit dem wechseln könnte man natürlich machen, eventuell so, dass er z.B. nach 3 Sekunden wieder zurückwechselt, sodass man noch Zeit hat mehrmals zu drücken.

Es müsste jedoch auch funktionieren, Sonos ins Dock zu minimieren. Dann müsste das Programm in jedem Space aktiv sein.
 
Also ich jetzt Sonos einfach dann immer minimiert und dann klappt alles super!
Vielen Dank nochmal!

(Irgendwie die Reaktionszeit des Dienstes kann man wahrscheinlich nicht verkürzen oder? Weil wenn ich die Tastenkombination dafür dann drücke dann dauert es ab und zu ein paar Sekunden bis es dann auch die Lautstärke geändert hat und andere Dienste reagieren da wesentlich schneller.)
 
So jetzt muss ich den Thread doch noch einmal herausgraben..
Sonos hat ja ein Update auf Version 3.7 gemacht und dabei hat sich viel an der Oberfläche verändert und seitdem funktioniert mein Befehl nicht mehr.
Wie müsste man denn den oben von Pill geschriebenen Code abändern, damit dieser weiterhin funktioniert?

Vielen Dank schonmal!
 
Lad dir mal den UIElement Inspector (bzw. aktuell heisst der Accessability Inspector) von Apple runter, dann kannst du recht einfach herausfinden, wie man den Soundslider ansteuern kann. Du kannst auch gerne ein Screenshot davon posten.
 
Ich hab es mit dem von dir genannten Programm ausprobiert, allerdings ist mir das richtige umschreiben des Codes nicht gelungen.

Das sind die Daten die angezeigt werden, wenn ich über dem Button des Volumen-Sliders bin:

<AXApplication: “Sonos”>
<AXWindow: “”>
<AXSlider>
<AXValueIndicator>

Attributes:
AXRole: “AXValueIndicator”
AXRoleDescription: “Wertanzeige”
AXHelp: “(null)”
AXFocused: “0”
AXParent: “<AXSlider>”
AXWindow: “<AXWindow: “”>”
AXTopLevelUIElement: “<AXWindow: “”>”
AXPosition: “x=873 y=73”
AXSize: “w=21 h=23”
AXValue (W): “40”
 
Probier das mal:

Code:
[FONT="Verdana"][size=2][color=#0000FF][b]activate[/b][/color] [color=#0000FF][i]application[/i][/color] "Sonos Desktop Controller"
[b]tell[/b] [color=#0000FF][i]application[/i][/color] "System Events"
	[b]tell[/b] [color=#0000FF][i]process[/i][/color] "Sonos"
		[b]set[/b] [color=#6C04D4]value[/color] [b]of[/b] [color=#0000FF][i]slider[/i][/color] 1 [b]of[/b] [color=#0000FF][i]window[/i][/color] 1 [b]to[/b] (([color=#6C04D4]value[/color] [b]of[/b] [color=#0000FF][i]slider[/i][/color] 1 [b]of[/b] [color=#0000FF][i]window[/i][/color] 1) - 10)
	[b]end[/b] [b]tell[/b]
[b]end[/b] [b]tell[/b][/size][/FONT]
 
Zurück
Oben Unten