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.

Feature Requests

Allgemeines zum Thema EventGhost
m00k00
Posts: 13
Joined: Fri Feb 24, 2006 7:18 pm

Post by m00k00 »

Ich h├ñtte da einen Vorschlag, der dir eventuell helfen k├Ânnte bei dem Problem, Bitmonster. Da EventGhost eh ziemlich Windows-lastig ist k├Ânntest du folgenderma├ƒen vorgehen um dieser Art Probleme zu umschiffen:
Es m├╝sste im WindowProc-Handler:

LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // not used
LPARAM lParam // logoff option
);

auf uMsg = WM_QUERYENDSESSION gepr├╝ft werden. Wichtig ist hierbei, dass als LRESULT False zur├╝ckgegeben werden muss um das Ausschalten des Rechners, bzw. das Neustarten verhindern. Dann k├Ânnte man ja noch diverse Dinge vor dem Neustart machen und ihn dann per API selber nochmal initialisieren. Oder man gibt nicht sofort das Result von WindowProc zur├╝ck, sondern schaltet erstmal die LED aus, oder whatever. Bevor man dann True zur├╝ckgibt und Windows neustartet/runterf├ñhrt. Ich wei├ƒ nur nicht, wo genau im Source von EventGhost das Hauptfenster seine WindowProc hat, bzw. ob man mit Python ├╝berhaupt da ran kommt ... bin leider noch zu unerfahren in Python :oops:

Ich m├Âchte vor allem auf diese Seite hier verweisen: http://msdn.microsoft.com/library/defau ... ession.asp

Als Trackback hat Google noch auf diese sehr n├╝tzliche Diskussion verwiesen:
http://www.experts-exchange.com/Operati ... 05682.html

Im MSDN-Artikel steht eigentlich alles wichtige drin. Der EE-Artikel zeigt das in C, Delphi und anderen Sprachen nochmal. Ich hoffe, das Material hilft ein wenig weiter. Wenn's noch nicht ausreichen sollte kannst du mich auch gerne mal per PN kontaktieren oder wir treffen uns irgendwo im IRC.

So far ... Bis demnächst :lol:
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

@m00k00
In wxPython (dem auf wxWindows basierenden GUI-Toolkit der hier verwendet wird) läuft das etwas anders. Dort registriert man eine Funktion für jeden Event mit dem man arbeiten will.

F├╝r WM_QUERYENDSESSION lautet das z.B.
self.Bind(wx.EVT_END_SESSION, self.OnEndSession)

Und dann man kann den Event in der Member-Funktion OnEndSession bearbeiten, wenn er kommt. Das habe/hatte ich soweit auch drin. Das Problem ist anscheinend, dass wxPython von selbst jedem Fenster vorher eine Close-Message schickt und da die nicht abgefangen würde, die Referenzen auf die Fenster nicht mehr gültig waren. Der Cleanup-Code ist daher immer mit einer Exception ausgestiegen und das führte zu dem Phänomen, dass die Plugins nicht sauber beendet wurden. Nach so um die 200 Ab/Anmeldevorgängen hatte ich das eigentlich soweit im Griff. Bei mir fährt der Rechner auch sauber runter.

Ich muss wohl mal eine Debug-Version bauen, um rauszufinden, wo es jetzt noch bei den anderen Usern knallt.
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Meier wrote:nee...leider nicht...jetzt ist es sogar so, dass solange eventghost gestartet ist, sich der pc nicht herunterfahren lässt :(

habs gerade vorsichtshalber an nem zweiten pc getestet...an beiden der gleiche effekt (beide winxp + sp2)
Dann lass uns gleich mal zu dem Bug-Report-Topic wechseln:
http://www.eventghost.org/forum/viewtopic.php?p=206#206
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Meier wrote:sch├Ân w├ñre es auch, wenn man auf der obersten ebene im konfigurationsbaum die elemente an eine beliebige stelle verschieben kann...derzeit lassen sich ordner, makros auf der "obersten" ebene nur in eine tiefere ebene verschieben, aber nicht an eine andere stelle...hoffe ist verst├ñndlich was ich meine...
Die 0.3.1 hat eine neue Eigenschaft in der Hinsicht. Damit sollten dann alle Arten des Verschiebens direkt m├Âglich sein und Funktion ist wohl auch sofort offensichtlich und intuitiv.
http://www.eventghost.org/forum/viewtopic.php?t=36
MonsterMagnet
Plugin Developer
Posts: 137
Joined: Fri Feb 10, 2006 12:04 pm

Post by MonsterMagnet »

Also nachdem ich dieses Wochende meine Konfig erfolgreich auf EG umgestellt habe :D ist mir aufgefallen das der Funktionsumfang von G3 annähernd erreicht ist.

Wobei EG wesentlich intuitiver zu konfigurieren ist und viele Sachen einfach besser funktionieren.

Was jetzt noch fehlt ist:

- Ausbau der Audio Optionen(wurde schon mal erwähnt)

- Command Capture (eine wie ich finde sehr nützliche Funktion, die wohl etwas aufwändiger werden wird...)

- Übergabe von Parametern an der Befehlzeile und beim ActiveX Control.

Hast Du bestimmt alles schon auf Deiner Todo Liste, wollte es nur einmal erwähnt haben.

P.S.:G3.3.4 erfolgreich deinstalliert !
Meier
Posts: 22
Joined: Fri Feb 10, 2006 6:18 am
Contact:

Post by Meier »

Bitmonster wrote: Die 0.3.1 hat eine neue Eigenschaft in der Hinsicht. Damit sollten dann alle Arten des Verschiebens direkt m├Âglich sein und Funktion ist wohl auch sofort offensichtlich und intuitiv.
http://www.eventghost.org/forum/viewtopic.php?t=36
jo...funzt so halbwegs...wobei ich ziemlich oft das problem habe, dass wenn ich etwas ans ende der liste verschieben will, er mir den untersten ordner ├Âffnet und ich dann den anderen ordner nur in diesen untersten ordner verschieben kann...tritt aber nicht immer auf....

ist hoffentlich verständlich was ich meine.

MfG
Meier
---------
visit:
Meierspage.de
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

Meier wrote:ist hoffentlich verständlich was ich meine.
Nicht so ganz. Aber ich ahne was du meinst. Der Trick dabei ist es, den Ordner nicht hinter die Elemente des ge├Âffneten Ordners zu ziehen, sondern so, als ob der Ordner noch geschlossen w├ñre. Dann sieht du, wenn du genau darauf achtest, dass die Linie/Markierung insgesamt drei Zust├ñnde annimmt: davor, hinein oder dahinter. Bei "dahinter" sieht es leicht so aus, als w├╝rde die Linie "in" den Ordner meinen, in Wirklichkeit meint sie aber dahinter (als ob der Ordner noch geschlossen w├ñre).

Leider kann es ein MS-Tree-Control anders nicht.
DerBildRiese
Posts: 1
Joined: Fri Mar 31, 2006 8:32 am

Post by DerBildRiese »

Guten Tag!

Ich hätte da mal eine Frage:

Ich habe diese Mouse von Logitech, die da heißt Mediaplay und die hat fünf Extratasten, um die Medienwiedergabe zu steuern. Diese Tasten sind mit der Logitech-Software leider nicht zu programmieren.
Kann EventGhost diese Tasten f├╝r mich nutzbar machen?

Rainer
trigger
Posts: 1
Joined: Fri Mar 31, 2006 10:55 am

Post by trigger »

Was fragst du mich.
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

@DerBildRiese

Ich denke mal, dass die Maus ihre Tasten als Multimedia-Keys senden wird. Insofern sollte sie sich wohl genauso verhalten wie ein Keyboard mit Mediakeys. Das Problem ist nun nur, dass EG noch kein Tastatur-Event-Plugin hat.
MonsterMagnet
Plugin Developer
Posts: 137
Joined: Fri Feb 10, 2006 12:04 pm

Post by MonsterMagnet »

Eventuell wäre es eine Idee den "MyConfig.xml" file der nach der Installation geladen wird einfacher zu halten. Insbesondere sollte das X10 plugin entfernt werden, damit neue User nicht gleich am Anfang mit einer Fehlermeldung verschreckt werden.

P.S.

528 läuft hier fehlerfrei
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Post by Bitmonster »

MonsterMagnet wrote:Eventuell wäre es eine Idee den "MyConfig.xml" file der nach der Installation geladen wird einfacher zu halten. Insbesondere sollte das X10 plugin entfernt werden, damit neue User nicht gleich am Anfang mit einer Fehlermeldung verschreckt werden.
Eigentlich sollte man mal eine Art Wizard schreiben, der den User beim ersten Start auffordert ein Plugin für seine FB zu wählen. Aber zuerst will ich noch eine Gliederung der Plugins einführen nach FB-Plugins, Spezielle-Programme-Plugins, Besondere-Funktionen-Plugins, etc., damit der AddPlugin-Dialog übersichtlicher wird. Dann kann man den User direkt zur Gruppe FB-Plugins beim ersten Start schicken.

Na, mal sehen wann ich Lust dazu habe....
MonsterMagnet wrote:P.S.

528 läuft hier fehlerfrei
Das wird sich mit der 529 sicher ändern. :)
Ich habe nämlich einiges an der Plugin-API geändert.
damdy-cash
Experienced User
Posts: 102
Joined: Tue Mar 28, 2006 6:48 am

Post by damdy-cash »

Hi Lars,
eine Import- Export Funktion w├ñre klasse (ich wei├ƒ schon per Copy- and past geht es). So gehalten, dass man die Gruppe oder das Makro ausw├ñhlen kann. Alternativ f├ñnd ich die M├Âglichkeit 2 EG.xml parallel zu laden eigentlich sogar noch besser.
Gruß Damdy
owagner
Plugin Developer
Posts: 16
Joined: Tue Feb 07, 2006 11:29 am

Timer

Post by owagner »

Ein Timer-Plugin w├ñre sehr, sehr, sehr sch├Ân, da "Warte 90s" keine wirklich sch├Âne Sache im Makroflu├ƒ sind (vorallem, wenn dann ein nerv├Âser User dasselbe Makro 20x hintereinander startet)

Um Multithreading-Probleme zu umgehen, k├Ânnte man es so l├Âsen, dass der Timer nach X Sekunden einen Event generiert, und der User dann selbst zu diesem Event ein Makro definieren muss.
User avatar
Bitmonster
Site Admin
Posts: 2239
Joined: Mon Feb 06, 2006 10:28 pm

Re: Timer

Post by Bitmonster »

owagner wrote:Ein Timer-Plugin w├ñre sehr, sehr, sehr sch├Ân, da "Warte 90s" keine wirklich sch├Âne Sache im Makroflu├ƒ sind (vorallem, wenn dann ein nerv├Âser User dasselbe Makro 20x hintereinander startet)

Um Multithreading-Probleme zu umgehen, k├Ânnte man es so l├Âsen, dass der Timer nach X Sekunden einen Event generiert, und der User dann selbst zu diesem Event ein Makro definieren muss.
Kann man nat├╝rlich mit einem einfachen Script erledigen:

Code: Select all

from threading import Timer
t = Timer(10.0, eg.TriggerEvent, ["MeinEvent"])
t.start()
Damit wird 10 Sekunden nach Ausf├╝hrung der Event "MeinEvent" ausgel├Âst.
Aber ich mache daf├╝r irgendwann noch einen passenden Befehl mit entsprechendem Dialog.
Post Reply