Page 1 of 1

Scripte per Shortcut

Posted: Sat May 03, 2008 6:42 am
by mahoney2002
Hallo,
ist es möglich scripte wie den Case Checker per shortcut zu starten ?

MfG
Stefan

Posted: Sat May 03, 2008 11:31 am
by Maaspuck
Hallo mahoney2002,

jo, das geht sogar mit verschiedenen Möglichkeiten. In der Datei Script.ini im Scripts Verzeichnis kann man beim gewünschten Skript noch die Zeile 'Shortcut=...' einfügen. Näheres dazu siehe hier.

Die zweite Möglichkeit besteht in einer Festlegung innerhalb eines Skript als Autostart Option. Dann wird der Shortcut sozusagen beim MediaMonkey Start eingerichtet. Das sieht dann in etwa wie folgt aus:

Code: Select all

'
' Complete Album v1.0
' 
' This script sets CustomField of the selected files to 'ja' or ''
'
' first version: 2007-09-02
' last version : 2007-09-02
'
' Installation:
' - just copy this code to a new text file, name it 'CompleteAlbum.vbs'
'   and save into your 'MediaMonkey\Scripts\Auto'-Folder
'
Option Explicit

Dim i
Dim List, Song

Sub OnStartup()
	'
	Dim MenuItemFolder, MenuItemBackward, MenuItemForward
	'
	Set MenuItemFolder = SDB.UI.AddMenuItemSub(SDB.UI.Menu_Scripts,1,1)
	MenuItemFolder.Caption = "Complete Album..."
	'
	Set MenuItemBackward = SDB.UI.AddMenuItem(MenuItemFolder,2,1)
	MenuItemBackward.Caption = "ja"
	MenuItemBackward.ShortCut = SDB.Localize("Ctrl+") & "8"
	MenuItemBackward.UseScript = Script.ScriptPath
	MenuItemBackward.OnClickFunc = "AlbumComplete"
	'
	Set MenuItemForward = SDB.UI.AddMenuItem(MenuItemFolder,2,2)
	MenuItemForward.Caption = "nein"
	MenuItemForward.ShortCut = SDB.Localize("Ctrl+") & "9"
	MenuItemForward.UseScript = Script.ScriptPath
	MenuItemForward.OnClickFunc = "AlbumNotComplete"
	'
End Sub

Sub AlbumComplete(MenuItemBackward)
	'
	Set List = SDB.SelectedSongList
	For i = 0 To List.Count-1
		Set Song = List.Item(i)
		Song.Custom1 = "ja"
		Song.UpdateDB
		Song.WriteTags
	Next 'i
	Set List = Nothing
	'
End Sub

Sub AlbumNotComplete(MenuItemForward)
	'
	Dim i, List, Song
	'
	Set List = SDB.SelectedSongList
	For i = 0 To List.Count-1
		Set Song = List.Item(i)
		Song.Custom1 = ""
		Song.UpdateDB
		Song.WriteTags
	Next 'i
	Set Song = Nothing
	Set List = Nothing
	'
End Sub
Kannst Du damit etwas anfangen?

Gruß

Maaspuck

Posted: Sun May 04, 2008 5:32 am
by mahoney2002
Hmm nicht ganz,
wie müsste ich es denn eintragen.

Habe es so probiert Shortcut = ("Ctrl+") & "8" wie aus deinem beispiel
dann:
Shortcut = "Ctrl+" & "8"
Shortcut = "Ctrl+" "8"
Wenn ich dann das script normal aufrufe kommt ein fehler " Variable nicht definiert " Shortcut "
Hab auch anere buchstaben verwendet aber will nicht so.
Bin aber auch kein Scripting guru...eher ein lamer :-?

Posted: Sun May 04, 2008 6:13 am
by Bex

Posted: Sun May 04, 2008 7:17 am
by Maaspuck
Hi mahoney2002,

in der Script.ini müsste es wohl 'Shortcut=Ctrl+8' heißen, also ohne Anfürungszeichen etc. Versuch es mal mit 'Shortcut=Strg+8'. Das habe ich zwar noch nicht probiert, aber vielleicht klappt es. Eine theoretische Erklärung hätte ich dafür, siehe dazu unten.

Das 'SDB.Localize("Ctrl+") & "8"' muss innerhalb eines Skripts verwendet werden:

Localize : damit es auf verschiedenen Sprachversionen läuft
"Ctrl+" & "8": Hier werden zwei Zeichenkettenvariablen verknüpft, nämlich die Zeichenkette 'Ctrl+' und die Zeichenkette '8'. Zusammen ergibt dies dann 'Ctrl+8', also genau die Zeichenkette, die in der script.ini stehen müsste.

Hier die theoretische Erklärung für ein 'Strg+8' in der script.ini. Innerhalb eines Skripts benötige ich das SDB.Localize, damit die im Englischen verwendete Abkürzung 'Ctrl+' ins Deutsche, also 'Strg+' übersetzt wird. Die '8' hänge ich dann lediglich an die entstandene deutsche Übersetzung an. Bei einer deutschen MediaMonkey Installation auf einem deutschen Betriebssystem wäre es also denkbar, dass in der script.ini ebenfalls diese Übersetzung vorgenommen werden muss. Da ein Skriptbefehl wie 'SDB.Localize' in der ini-Datei jedoch nicht funktioniert, muss vielleicht die übersetzte Variante, also 'Strg+' verwendet werden.

So, jetzt habe ich hier unheimlich viel geschrieben... es wäre vermutlich schneller gegangen, wenn ich es gleich ausprobiert hätte. Das werde ich nun tun und vermutlich kann ich die gesamte Theorie dann über den Haufen werfen... wir werden sehen.

Viel Erfolg

Maaspuck