GUI-Aktionen ausblenden

Diskutiere mit über: GUI-Aktionen ausblenden im Scripting und Automatisierung Forum

  1. lucia

    lucia Thread Starter MacUser Mitglied

    Beiträge:
    166
    Zustimmungen:
    1
    Registriert seit:
    04.01.2005
    Ich habe mir ein kleines Applescript geschrieben, um die CPU Steuerung (Max/Min/Auto) über das Applescript-Menü der Statusleiste einzustellen. Beim Wechsel der Einstellungen zeigt er das Öffnen, das Aufklappen des Menüs usw. an, ich möchte aber, daß dies im Hintergrund geschieht. Wie kann so ein Applescript, das Fenster und Menüs nutzt, für den Anwender unsichtbar ausgeführt werden? (Ich bin Applescript-Anfänger!)

    Habe über die Suche nichts finden können, hatte aber auch nicht wirklich gute Ideen für Schlagworte.

    Bin für Ratschläge dankbar.
     
  2. p-cord

    p-cord MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    0
    Registriert seit:
    01.04.2004
    hallo,

    kann Dir leider bei Deinem problem nicht helfen; jedoch würde mich Dein Script interessieren…:D
    Hast Du das so gemacht wie hier: http://www.macosxhints.com/dlfiles/notebook_speed_scpt.txt , oder hast Du eine andere Lösung gefunden? Bei mir geht das Script von macosxhints nämlich nicht…

    Grüsse, p-cord.
     
    Zuletzt von einem Moderator bearbeitet: 24.10.2015
  3. lucia

    lucia Thread Starter MacUser Mitglied

    Beiträge:
    166
    Zustimmungen:
    1
    Registriert seit:
    04.01.2005
    So sieht das aus:


    tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.energysaver"
    end tell

    //* Hier wird die CPU-Einstellung verändert

    tell application "System Events"
    tell tab group 1 of group 1 of window "Energie sparen" of process "System Preferences"
    click radio button "Optionen"
    click pop up button 1
    pick menu item "Automatisch" of menu of pop up button 1
    end tell
    end tell

    tell application "System Preferences"
    quit
    end tell


    //* ab hier werden die Dateinamen verändert (nicht obligat!)

    tell application "Finder"
    activate
    if document file "CPU Automatisch.scpt" of folder "Scripts" of folder "Library" of folder "..." of folder "Users" of startup disk exists then
    set name of document file "CPU Automatisch.scpt" of folder "Scripts" of folder "Library" of folder "..." of folder "Users" of startup disk to "CPU Automatisch (aktiv).scpt"
    end if
    if document file "CPU Minimal (aktiv).scpt" of folder "Scripts" of folder "Library" of folder "..." of folder "Users" of startup disk exists then
    set name of document file "CPU Minimal (aktiv).scpt" of folder "Scripts" of folder "Library" of folder "..." of folder "Users" of startup disk to "CPU Minimal.scpt"
    end if
    if document file "CPU Maximal (aktiv).scpt" of folder "Scripts" of folder "Library" of folder "..." of folder "Users" of startup disk exists then
    set name of document file "CPU Maximal (aktiv).scpt" of folder "Scripts" of folder "Library" of folder "..." of folder "Users" of startup disk to "CPU Maximal.scpt"
    end if
    end tell


    Drei Scripts habe ich dieser Art geschrieben. Alle drei befinden sich mit passenden Dateinamen im Ordner für die Scripts. Eines für Max., eines für Min. und eines für Auto. Wenn ich eines anklicke, wird nicht nur die CPU-Einstellung entsprechend verändert, sondern auch ein "(aktiv)" hinter den Dateinamen gehängt, damit ich bereits in der Statusleiste sehe, welche Einstellung gerade aktiv ist. Verstanden?

    Gruß.
     
  4. p-cord

    p-cord MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    0
    Registriert seit:
    01.04.2004
    Hi,
    danke fürs Script! kann es gerade nicht testen, da ich das ibook nicht hier habe…
    aber die Funktionsweise hab ich verstanden; ist im Prinzip das Selbe wie bei macosxhints…
    Nur so als grundsätzlicher Ansatz zu Deiner ursprünglichen Frage:
    man könnte ja auch über ein Shell-Script über defaults write die Datei com.apple.PowerManagement.plist ändern, dann würde der ganze "fensterkram" wegfallen. fragt sich nur, wie man dem System mitteilt, die Datei neu auszulesen…?!
     
    Zuletzt bearbeitet: 25.04.2005
  5. lucia

    lucia Thread Starter MacUser Mitglied

    Beiträge:
    166
    Zustimmungen:
    1
    Registriert seit:
    04.01.2005
    Gute Idee,

    aber die Datei scheint nicht zwischen "Max" und "Auto" zu unterscheiden, zumindest lautet bei beiden Einstellungen die entsprechende Zeile:

    reduce processor speed
    0

    Nur bei "Min" ändert er in:

    reduce processor speed
    1

    Oder habe ich da was übersehen. Bleibt das Problem - wie von Dir bereits geschildert - den Computer zum Auslesen und umändern der Einstellungen zu zwingen. Oder macht er das von allein alle x Sekunden? Wohl kaum, oder?
     
  6. p-cord

    p-cord MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    0
    Registriert seit:
    01.04.2004
    So; ich hab das jetzt mal gemacht; der befehl lautet pmset (mußte ich erst nochmal nachlesen ;)). Bleibt nur das problem; dasss man immer das Admin-Passwort eingeben muss. Man könnte aber soweit ich weiß, das programm in die sudoers eintragen, dann würde das wegfallen. Weiß aber nicht, wie das geht…:)

    edit: Code geändert:
    Code:
    set the cpu_reduce to 1
    display dialog "CPU-Geschwindigkeit: " buttons {"Abbrechen", "Maximal", "Minimal"}
    copy the result as list to button_pressed
    if the button_pressed is "Abbrechen" then
    	quit
    end if
    if the button_pressed is "Maximal" then
    	cpu_reduce = 0
    	
    end if
    if the button_pressed is "Minimal" then
    	cpu_reduce = 1
    	
    end if
    try
    	do shell script "sudo pmset reduce " & cpu_reduce with administrator privileges
    end try
    
    
    "Automatisch " geht aber leider auch hier nicht; müssen wir mal versuchen, herauszufinden, wie das implementiert ist. Vielleicht weiß es ja auch jemand hier…?
     
    Zuletzt bearbeitet: 25.04.2005
  7. p-cord

    p-cord MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    0
    Registriert seit:
    01.04.2004
    okay
    es muss heissen "sudo pmset reduce 0 dps 1" ;
    bin gerade am Überarbeiten, da das o.g. Script nicht wirklich tut…
     
  8. p-cord

    p-cord MacUser Mitglied

    Beiträge:
    662
    Zustimmungen:
    0
    Registriert seit:
    01.04.2004
    So geht's auch mit "Automatisch"

    Code:
    set term_script to ""
    try
    	display dialog "Prozessorgeschwindigkeit setzen auf: " buttons {"Automatisch", "Minimal", "Maximal"} default button "Automatisch"
    	copy the result as list to the {knopp}
    	
    	if the knopp is "Automatisch" then
    		
    		set term_script to "sudo pmset reduce 0 dps 1"
    		
    	else if the knopp is "Minimal" then
    		
    		set term_script to "sudo pmset reduce 1 dps 0"
    		
    	else if the knopp is "Maximal" then
    		
    		set term_script to "sudo pmset reduce 0 dps 0"
    			
    	end if
    	-- display dialog term_script
    	
    	do shell script term_script with administrator privileges
    end try
    
    oder um das Passwort zu sparen, in die Datei /etc/sudoers
    bei # User privilege specification
    folgendes einfügen:
    p-cord p-cords_ibook = (root) NOPASSWD: /usr/bin/pmset

    (p-cord durch den eigenen Usernamen ersetzen; p-cords_ibook durch den Computernamen…)
    Quellen: thinkmacosx, macosxhints
    dann geht das folgende Script ohne Passwortabfrage:



    Code:
    set term_script to ""
    try
    	display dialog "Prozessorgeschwindigkeit setzen auf: " buttons {"Automatisch", "Minimal", "Maximal"} default button "Automatisch"
    	copy the result as list to the {knopp}
    	
    	if the knopp is "Automatisch" then
    		
    		set term_script to "sudo pmset reduce 0 dps 1"
    		
    	else if the knopp is "Minimal" then
    		
    		set term_script to "sudo pmset reduce 1 dps 0"
    		
    	else if the knopp is "Maximal" then
    		
    		set term_script to "sudo  pmset reduce 0 dps 0"
    		
    		
    	end if
    	
    	
    	
    	
    	do shell script term_script
    	
    	
    end try
    
    
    
    
    
    
     
    Zuletzt bearbeitet: 25.04.2005
  9. lucia

    lucia Thread Starter MacUser Mitglied

    Beiträge:
    166
    Zustimmungen:
    1
    Registriert seit:
    04.01.2005
    Ich würde mich immer noch über eine Antwort meiner eigentlichen Frage freuen, nämlich ob man ein Applescript ausführen lassen kann, ohne dass der Anwender die Schritte (Öffnen von Fenstern, Menüs aufklappen, etc.) sehen kann.

    Danke.
     
  10. Snow

    Snow MacUser Mitglied

    Beiträge:
    262
    Zustimmungen:
    2
    Registriert seit:
    24.03.2003
    Wenn das Zielprogramm AppleScript unterstützt, kannst du alle Aktionen im Hintergrund ausführen lassen. Wird AppleScript nicht unterstützt, bleibt dir nur der Weg über das GUI-Scripting. Hierzu muss das Zielprogramm dann allerdings im Vordergrund sein. AppleScript fungiert dann nicht mehr als objektorientierte Programmiersprache sondern eher als Makrosprache. Beim GUI-Scripting werden nur Mausklicks und Tastatureingaben simuliert - ganz so, als würdest du es gerade per Maus und/oder Tastatur ausführen. Hierbei sind natürlich alle einzelnen Schritte zu sehen.
     
Die Seite wird geladen...
Ähnliche Themen - GUI Aktionen ausblenden Forum Datum
Aktionen aus shelscript heraus nutzen Scripting und Automatisierung 17.05.2014
Automator: Aktionen wiederholen Scripting und Automatisierung 15.11.2011
Wo speichert Automator Parameter? Wie zur Laufzeit abfragen? Scripting und Automatisierung 14.09.2011
GUI Script, Datum und Uhrzeit verstellen Scripting und Automatisierung 20.02.2006
GUI Skripting mit AppleSkript Scripting und Automatisierung 25.01.2003

Diese Seite empfehlen

Benutzerdefinierte Suche