Fischer-Bayern.de
Letztes Update: 12.01.2005 | 1:12:15 Uhr
OS 9 - Bug umgehen 
Peter Fischer


Falls Sie sich mit dem Gedanken tragen, ein Skript zu schreiben, das ihren Desktop aufräumt, sind Sie hier gerade richtig.

In OS 9 lassen sich Objekte nicht per Skript positionieren, wenn bei den Darstellungsoptionen "Am Raster ausrichten" angewählt ist. Es erscheint folgende Fehlermeldung:

Das ist natürlich Humbug. Es handelt sich bei einer Datei, einem Alias oder einem Volume ja nicht um ein Fenster. Wir wollen schließlich nur deren Icons auf dem Desktop anordnen.

Hier ein kleines Skript zur Demonstration. Wählen Sie bitte in den Darstellungsoptionen "Am Raster ausrichten" aus. Ich möchte das hier nicht per Skript erledigen.

tell application "Finder"
   if not (exists folder "Verschiebe mich") then
      set NeuerOrdner to make new folder
      set the name of NeuerOrdner to "Verschiebe mich"
      set NeuerOrdner to folder "Verschiebe mich"
   else
      set NeuerOrdner to folder "Verschiebe mich"
   end if
   set ThePosition to position of NeuerOrdner
   delay 3 -- Damit man die Sache besser beobachten kann
   set hPos to (item 1 of ThePosition) - 50
   set vPos to (item 2 of ThePosition) - 50
   set ThePosition to {hPos, vPos}
   set position of NeuerOrdner to ThePosition
end tell

Das Skript prüft zunächst, ob der Ordner "Verschiebe mich" existiert. Dieser Ordner soll per Skript verschoben werden. Wenn Sie das Skript jetzt starten, bekommen Sie die erwähnte Fehlermeldung zu sehen.

Die Lösung

...ist jedoch ganz einfach. Die Option "Am Raster ausrichten" können wir per Skript deaktivieren, also Ausrichtung "keine".

Es wird nicht erst lange geprüft, welche Option ausgewählt ist. Die aktuelle Einstellung schreiben wir einfach in eine Variable.

set myView to (spatial view arrangement of desktop)

Jetzt schalten wir die Symbolanordnung auf "keine". Es spielt keine Rolle, ob diese Einstellung evtl. bereits vorliegt.

set spatial view arrangement of desktop to not arranged

Nun können wir den Ordner verschieben lassen. Die Fehlermeldung bleibt uns erspart. Nachdem das geschehen ist, stellen wir die alten Einstellungen wieder her.

set spatial view arrangement of desktop to myView

Wenn wir das jetzt in unser Skript einbauen sieht das so aus:

tell application "Finder"
   if not (exists folder "Verschiebe mich") then
      set NeuerOrdner to make new folder
      set the name of NeuerOrdner to "Verschiebe mich"
      set NeuerOrdner to folder "Verschiebe mich"
   else
      set NeuerOrdner to folder "Verschiebe mich"
   end if
   set ThePosition to position of NeuerOrdner
   delay 3 -- Damit man die Sache besser beobachten kann
   set myView to (spatial view arrangement of desktop)
   set spatial view arrangement of desktop to not arranged
   set hPos to (item 1 of ThePosition) - 50
   set vPos to (item 2 of ThePosition) - 50
   set ThePosition to {hPos, vPos}
   set position of NeuerOrdner to ThePosition
   set spatial view arrangement of desktop to myView
end tell

Jetzt läuft unser Skript auch ohne Probleme.

So ganz ohne Grund gibt es diese Fehlermeldung jedoch nicht. Es ist zwar möglich, Fenster zu verschieben, sogar wenn "Am Raster ausrichten" aktiviert ist, wenn es sich jedoch um ein Popup-Fenster handelt, funktioniert das nicht.
Deshalb sollten Sie, wann immer Sie per Skript ein Fenster positionieren wollen, zuerst prüfen, ob es kein Popup-Fenster ist.

Im folgenden Skript lasse ich alle normalen Fenster in eine Variable schreiben. Falls diese Liste leer ist, haben Sie kein normales Fenster offen. Dann ist es Zeit, per Skript etwas dagegen zu unternehmen.

tell application "Finder"
   activate
   set AllWindows to every container window whose popup is false
   if AllWindows = {} then
      set myWindow to container window of (open startup disk)
   else
      set myWindow to item 1 of AllWindows
   end if
   set ThePosition to position of myWindow
   delay 3
   set hPos to (item 1 of ThePosition) + 50
   set vPos to (item 2 of ThePosition) + 50
   set ThePosition to {hPos, vPos}
   set position of myWindow to ThePosition
end tell

Nun wünsche ich Ihnen fröhliches Verschieben!




 

 

Workshop



snow@fischer-bayern.de

Ebene 1