Notice: This forum has been recovered from an old backup, so some content, links, and dates may be outdated. The forum is currently read-only while we restore sign-in and registration functionality. Details
If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.
If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.
foobar plugin
-
MonsterMagnet
- Plugin Developer
- Posts: 137
- Joined: Fri Feb 10, 2006 12:04 pm
foobar plugin
Hallo,
hab mal ein Foobar Plugin gemacht.
Leider ist es nur schwer m├Âglich sendmessage zu verwenden, da sich die Fensternamen von Version zu Version ├ñndern.
So funktionierts mit 0.8 und 0.9 und wahrscheinlich auch mit allen anderen.
Mit der Fehlerbehandlung bin ich noch nicht ganz zufrieden.
Wer sonst noch was zu bemängeln hat oder Verbessungsvorschläge machen kann...
EDIT: Verbesserter Code weiter unten...
Wie hast Du Dir eigentlich die Plugin Installation vorgestellt?
Per Installer oder soll der User selber einen Ordner anlegen und
die Plugin Dateien einf├╝gen ?
Ich w├╝rde ja die Installer Methode bevorzugen.
Wie und wo k├Ânnte man die Plugins dann hochladen ?
hab mal ein Foobar Plugin gemacht.
Leider ist es nur schwer m├Âglich sendmessage zu verwenden, da sich die Fensternamen von Version zu Version ├ñndern.
So funktionierts mit 0.8 und 0.9 und wahrscheinlich auch mit allen anderen.
Mit der Fehlerbehandlung bin ich noch nicht ganz zufrieden.
Wer sonst noch was zu bemängeln hat oder Verbessungsvorschläge machen kann...
EDIT: Verbesserter Code weiter unten...
Wie hast Du Dir eigentlich die Plugin Installation vorgestellt?
Per Installer oder soll der User selber einen Ordner anlegen und
die Plugin Dateien einf├╝gen ?
Ich w├╝rde ja die Installer Methode bevorzugen.
Wie und wo k├Ânnte man die Plugins dann hochladen ?
Last edited by MonsterMagnet on Tue Feb 14, 2006 5:35 pm, edited 1 time in total.
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
Re: foobar plugin
Gute Frage, die sich jetzt zum ersten mal stellt. Denn das ist das erste Plugin, eines anderen Autors.MonsterMagnet wrote:Wie hast Du Dir eigentlich die Plugin Installation vorgestellt?
Per Installer oder soll der User selber einen Ordner anlegen und
die Plugin Dateien einf├╝gen ?
Ich w├╝rde ja die Installer Methode bevorzugen.
Wie und wo k├Ânnte man die Plugins dann hochladen ?
Ein Installer? Wäre vielleicht nicht schlecht. Allerdings fällt mir gerade keiner ein, den man mal eben soweit vorkonfigurieren kann und der Programmierer dann einfach die Dateien anhängen kann.
Es gibt auch noch die M├Âglichkeit den Ordner des Plugins zu einer Datei zusammenzufassen. Ist dann wie eine DLL die der User in den Plugin-Ordner schiebt. Ich hatte das aber erstmal wieder abgeschaltet, weil es ohne das einfacher war, da jetzt mit dem Installer dann auch gleich der vollst├ñndige Source-Code kommt.
Andere Projekte machen es so, dass die SAchen einfach zu einem Zip-File zusammengefasst werden und der User es dann aus dem Programm heraus ├Âffnet. Die Routine entpackt dann einfach alles an die richtigen Stellen und fertig ist die Installation.
Noch geiler wäre ja so eine Art Online-Liste, die der User dann anschauen kann und mit einem Klick dann Runterladen und Installation erledigt wird.
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
Gerade eben auf doof gefunden:
http://yallara.cs.rmit.edu.au/~dhotson/upload/foobar.py
Es soll wohl ein Plugin f├╝r foobar geben, dass dann auf SendMessage reagiert. Ist aber auch bl├Âde, dass der User dann erst in foobar ein Plugin installieren muss. Das die Entwickler auch nie an eine sch├Âne Automatisierungs-Schnittstelle denken.
http://yallara.cs.rmit.edu.au/~dhotson/upload/foobar.py
Es soll wohl ein Plugin f├╝r foobar geben, dass dann auf SendMessage reagiert. Ist aber auch bl├Âde, dass der User dann erst in foobar ein Plugin installieren muss. Das die Entwickler auch nie an eine sch├Âne Automatisierungs-Schnittstelle denken.
-
MonsterMagnet
- Plugin Developer
- Posts: 137
- Joined: Fri Feb 10, 2006 12:04 pm
-
MonsterMagnet
- Plugin Developer
- Posts: 137
- Joined: Fri Feb 10, 2006 12:04 pm
Zum Sendmessage, hab echt alles probiert aber beim ersten Start von Foobar ist nur das Message only Fenster zufinden.
Man k├Ânnte zwar mit EnumWindows das ganze nach nem string "foobar" durchsuchen, finde ich aber auch nicht grade elegant.
hFoobar = win32gui.FindWindow("{DA7CD0DE-1602-45e6-89A1-C2CA151E008E}",None)
Der Entwickler hat das mit Absicht sogemacht...
Man k├Ânnte zwar mit EnumWindows das ganze nach nem string "foobar" durchsuchen, finde ich aber auch nicht grade elegant.
hFoobar = win32gui.FindWindow("{DA7CD0DE-1602-45e6-89A1-C2CA151E008E}",None)
Der Entwickler hat das mit Absicht sogemacht...
-
MonsterMagnet
- Plugin Developer
- Posts: 137
- Joined: Fri Feb 10, 2006 12:04 pm
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
-
MonsterMagnet
- Plugin Developer
- Posts: 137
- Joined: Fri Feb 10, 2006 12:04 pm
Also an foobar haben sich schon andere Leute die Zäne ausgebissen.
Alle Fernsteuerungsversuche die ich kenne(ohne Plugins), scheitern
an dem Message only Fenster sogar die im Programm integrierte Funktion um
die Tasten eines Multimediakeyboards zu benutzen.
Das mit dem Sendmessage funktioniert bei allen mir bekannten Anwendungen(z.B: Firefox Extension) nur mit einer bestimmten Version
und dann auch nur wenn das Programm einmal den Focus gehabt hat.
Zum Installer, hab bisher nur Inno benutzt (ausschließlich Eigengebrauch!)
und fand das so einfach wie ein Zip file zuerstellen.
Da kann man eigentlich alles mit machen.
Alle Fernsteuerungsversuche die ich kenne(ohne Plugins), scheitern
an dem Message only Fenster sogar die im Programm integrierte Funktion um
die Tasten eines Multimediakeyboards zu benutzen.
Das mit dem Sendmessage funktioniert bei allen mir bekannten Anwendungen(z.B: Firefox Extension) nur mit einer bestimmten Version
und dann auch nur wenn das Programm einmal den Focus gehabt hat.
Zum Installer, hab bisher nur Inno benutzt (ausschließlich Eigengebrauch!)
und fand das so einfach wie ein Zip file zuerstellen.
Da kann man eigentlich alles mit machen.
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
Ist ja d├ñmlich von den Entwicklern, so einen Popanz zu machen. K├Ânnte man das Plugin noch erweitern, damit es bei Vorhandensein des remote_plugins die zus├ñtzlichen Funktionen verwendet?
Inno benutze ich ja auch. Aber auch nur, weil das erste Installation-Skript f├╝r ein Python-Programm, das mir ├╝ber den Weg lief ausgerechnet f├╝r Inno war. Ich denke wir machen das mal zuerst so. Ich lege einen Registry-Eintrag an und schau mal, wie man das mit Inno am bequemsten l├Âst. Und irgendwann werde ich mal versuchen eine Download&Install-Funktion in EG zu integrieren.
Wie sieht es bei dir mit Webspace aus? Sonst muss ich mal zusehen, dass ich dir einen FTP-Zugang oder sowas besorge.
Inno benutze ich ja auch. Aber auch nur, weil das erste Installation-Skript f├╝r ein Python-Programm, das mir ├╝ber den Weg lief ausgerechnet f├╝r Inno war. Ich denke wir machen das mal zuerst so. Ich lege einen Registry-Eintrag an und schau mal, wie man das mit Inno am bequemsten l├Âst. Und irgendwann werde ich mal versuchen eine Download&Install-Funktion in EG zu integrieren.
Wie sieht es bei dir mit Webspace aus? Sonst muss ich mal zusehen, dass ich dir einen FTP-Zugang oder sowas besorge.
-
MonsterMagnet
- Plugin Developer
- Posts: 137
- Joined: Fri Feb 10, 2006 12:04 pm
Hab ich auch schon dr├╝ber nachgedacht, erstmal findwindow dann Plugin, dann commandline.
Falls es EG User gibt die so eine L├Âsung bevorzugen kann man sich ja mal Gedanken machen.
Ich finds f├╝rs erste mal besser ein Plugin zu haben was mit jeder Version funktioniert.
Man k├Ânnte ja auch verschiedene Versionen machen.
Mit dem Webspace siehts schlecht aus...
Falls es EG User gibt die so eine L├Âsung bevorzugen kann man sich ja mal Gedanken machen.
Ich finds f├╝rs erste mal besser ein Plugin zu haben was mit jeder Version funktioniert.
Man k├Ânnte ja auch verschiedene Versionen machen.
Mit dem Webspace siehts schlecht aus...
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
Na ja, der User merkt ja fast nix davon, wenns sauber gemacht ist. Muss man ihm halt in den Help-Strings aufzeigen, dass er unter Umständen das remote-plugin installieren muss.
Also würde ich da gleich alles reinbauen, was geht. Ich kann dir dann auch noch nen Config-Dialog für das Plugin machen, wo der User dann die beforzugte Zugriffsart auswählen kann oder sowas.
Hab mal etwas an deinem Plugin rumgepfuscht. So sieht es vielleicht noch etwas sch├Âner aus. Du hast ja anscheinend das Winamp-Plugin als Vorlage genutzt und das war so ziemlich das erste EG-Plugin, dass ich je geschrieben habe. Bin aber trotzdem begeistert, wie schnell du dir die M├Âglichkeiten von Python zu eigen gemacht hast.
Also würde ich da gleich alles reinbauen, was geht. Ich kann dir dann auch noch nen Config-Dialog für das Plugin machen, wo der User dann die beforzugte Zugriffsart auswählen kann oder sowas.
Hab mal etwas an deinem Plugin rumgepfuscht. So sieht es vielleicht noch etwas sch├Âner aus. Du hast ja anscheinend das Winamp-Plugin als Vorlage genutzt und das war so ziemlich das erste EG-Plugin, dass ich je geschrieben habe. Bin aber trotzdem begeistert, wie schnell du dir die M├Âglichkeiten von Python zu eigen gemacht hast.
Code: Select all
import win32api
import _winreg
import eg
fnList = (
('Play', 'Simulate a press on the play button', "/play"),
('Pause', 'Simulate a press on the pause button', "/pause"),
('Stop', 'Simulate a press on the stop button', "/stop"),
('PreviousTrack', 'Simulate a press on the previous track button', "/prev"),
('NextTrack', 'Simulate a press on the next track button', "/next"),
('Random', 'Simulate a press on the random button', "/rand"),
('Exit', 'Quits foobar', "/exit"),
('PlayPause', 'Simulate a press on the PlayPause button', "/playpause"),
('Show', 'Shows foobar', "/show"),
('Hide', 'Hides foobar', "/hide"),
('Run', 'Run foobar with its default settings', None),
)
class Foobar2000(eg.PluginClass):
name = 'Foobar2000'
description = "Adds support functions to control Foobar2000"
def __init__(self):
path = None
try:
fb = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,"Software\\foobar2000")
path,k =_winreg.QueryValueEx(fb,"InstallDir")
_winreg.CloseKey(fb)
except:
eg.PrintError("Foobar2000 installdir not found!")
group = self.AddGroup(self.name)
for tmp_name, tmp_description, tmp_value in fnList:
class tmp_action(eg.ActionClass):
name = tmp_name
description = tmp_description
value = tmp_value
def __call__(self):
try:
return win32api.ShellExecute(0, None,
"foobar2000.exe", self.value, path, 0)
except:
eg.PrintError("Foobar2000 installdir not found!")
tmp_action.__name__ = tmp_name
group.AddAction(tmp_action)
Last edited by Bitmonster on Mon Feb 13, 2006 8:14 pm, edited 2 times in total.
-
MonsterMagnet
- Plugin Developer
- Posts: 137
- Joined: Fri Feb 10, 2006 12:04 pm
-
MonsterMagnet
- Plugin Developer
- Posts: 137
- Joined: Fri Feb 10, 2006 12:04 pm
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm
- Bitmonster
- Site Admin
- Posts: 2239
- Joined: Mon Feb 06, 2006 10:28 pm