Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

System Events als Finder-Ersatz (bzw. info for)

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Folker
•---->
•---->


Anmeldedatum: 11.12.2000
Beiträge: 649
Wohnort: Holsteinische Schweiz

BeitragVerfasst am: 26.05.2007 - 19:39    Titel: System Events als Finder-Ersatz (bzw. info for) Antworten mit Zitat

Als nicht gerade großer Fan von "Finders" AppleScript-Künsten (jaja, wer seit 1995 AppleScriptet hat so manche leidvolle Erfahrung, angefangen bei der Geschichte mit dem Programm Scriptable Finder [hieß das so?], der zu AppleScripts Anfangszeiten nämlich noch kein AppleScript verstand, bis hin zu manchen Bugs [manch' Befehl konnte den Finder für Sekunden in Winterstarre befördern]) suche ich natürlich immer Wege den guten alten Finder zumindest beim AppleScripten zu umgehen. Auch der Befehl info for kommt mir seit einiger Zeit als Auslaufmodell vor - obwohl ich diesen immer gerne benutzt habe. So habe ich zuletzt mal ein bisschen mit den System Events herumgepröbelt. Im Folgenden einige Ergebnisse dieser Bemühungen, wobei ich natürlich auch nicht weiß, ob es mit der nächsten Version von AS noch funktioniert! (version "1.10.7")

--existiert ein item schon am Zielort?
set theItem to ((path to documents folder from user domain) as text) & "Testdatei.txt"
check_Name(theItem)
-- true or false

on check_Name(theItem)
   tell application "System Events"
      return (item theItem exists)
   end tell
end check_Name

(*
get_ItemClass trifft es nicht so ganz - hier wird nur abgefragt, ob das Zielobjekt
ein Ordner ist (true), alle anderen Items, auch packages, werden mit false zurückgegeben
*)

set theItem to choose file
--set theItem to choose folder
get_ItemClass(theItem)

on get_ItemClass(theItem)
   tell application "System Events"
      return (class of item (theItem as text) is folder)
   end tell
end get_ItemClass

-- eine Art list folder mit System Events realisiert
-- es werden nur sichtbare Objekte zurückgegeben!

set theItem to choose folder
get_ItemList(theItem, {})
-- liste mit Dateiverweisen in Pfadform

on get_ItemList(theItem, TheL)
   tell application "System Events"
      set temp to every item of theItem
      repeat with i in temp
         if (visible of i) then set end of TheL to (path of i) as alias
      end repeat
      return TheL
   end tell
end get_ItemList

-- Gibt den Namen einer Datei (mit Extension) und die Extension separat zurück
set theItem to choose file
get_Name(theItem)
-- {"vollständiger Name", "Extension"}

on get_Name(theItem)
   tell application "System Events"
      return {name of theItem, name extension of theItem}
   end tell
end get_Name

--Das geht natürlich auch für den kompletten Dateipfad
set theItem to choose file
get_FilePath(theItem)
-- {"vollständiger Dateipfad"}

on get_FilePath(theItem)
   tell application "System Events"
      return {path of theItem}
   end tell
end get_FilePath

-- Naja, über Sinn und Unsinn des folgenden 'Path zum Item' lässt sich diskutieren
-- ist aber ganz praktisch handzuhaben

set theItem to choose file
set theItem to choose folder
get_Path(theItem)

on get_Path(theItem)
   tell application "System Events"
      set thePath to path of theItem
      if (package folder of theItem) or (class of item (theItem as text) is folder) then
         set x to -3
      else
         set x to -2
      end if
   end tell
   set {oldDelims, AppleScript's text item delimiters} to {AppleScript's text item delimiters, {":"}}
   set thePath to (text items 1 thru x of (theItem as text)) as text
   set AppleScript's text item delimiters to oldDelims
   return thePath
end get_Path


---Das Umbennen habe ich ganz vergessen anzuhängen:
on set_Name(theItem, theNewName)
   tell application "System Events"
      set name of theItem to theNewName
      return {theItem, name of theItem}
   end tell
end set_Name


Allerdings erzeugt der Befehl set name keinen error bei vorhanden sein eines Objekts gleichen Namens im gleichen Ordner - der Befehl wird schlicht ignoriert - daher lasse ich gleich den neuen Namen mit zurückgeben und kann daraufhin überprüfen, ob er identisch mit dem beabsichtigten neuen Namen ist - sonst error "Blah" number 31960

Edit: In Bunt zur besseren Lesbarkeit ( hallo winke cool man Mr. Green)
_________________
Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 14.07.2007 - 10:11    Titel: Antworten mit Zitat

tell application "Finder" to set Sel to selection as alias as text
return Sel -->ZB "[Startup-Disk]:Users:[der user]:Desktop:test.txt"

weil dies so blitzschnell herrliche Ergebnisse über komplizierteste Pfade liefert,
Frage: gibst sowas auch in deinen "System Events"? (und fürchte dabei etwas verwechselt zu haben...)
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 15.07.2007 - 13:20    Titel: Antworten mit Zitat

Hast du schon mal "System Events" als aktives Programm gesehen? Also ich nicht. - System Events arbeitet immer unsichtbar und somit kannst du in diesem Programm auch nichts selektieren.

Desweiteren hilft ein kleiner Blick ins Funktionsverzeichnis. Beim Finder wirst du den Befehl "select" in der Standard Suite finden, bei System Events jedoch nicht.

Außerdem lässt sich so etwas ja durch einen einfachen Test feststellen:

tell application "System Events" to set Sel to selection
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Folker
•---->
•---->


Anmeldedatum: 11.12.2000
Beiträge: 649
Wohnort: Holsteinische Schweiz

BeitragVerfasst am: 16.07.2007 - 08:01    Titel: Antworten mit Zitat

Hallo Willy,

Snow hat die Antwort ja schon gegeben - das geht nicht! Die Auswahl eines (Finder-)Items ist ja auch eher eine programmspezifische Funktion des Finders, welcher ja nichts anderes als ein Programm darstellt. Ebenso wenig können Dir die System Events einen Datensatz im FileMaker auswählen.

Gruß, Folker
_________________
Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 30.07.2007 - 03:17    Titel: Antworten mit Zitat

als Ergänzung, wenn jemand das choose umgehen will (dieses muss spezifiziert werden auf: files oder Ordner oder Alias)
Man hat also einen String des Pfades vor sich und sucht nun den Namen:

set TESTERPfadString to "HD:Users:UserOrdner:Documents:TESTER.doc"
set theItem to alias TESTERPfadString --<nur Variablen, sonst sucht beim Kompiliervorgang

get_Name(theItem)

on get_Name(theItem)
   tell application "System Events"
      return {name of theItem, name extension of theItem}
   end tell
end get_Name

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> OS X-Snippets Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter