"Events" anderer Programme abfangen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Hi.
Einige von euch kennen eventuell TeamSpeak2.
Es gibt ein Programm, welches die aktuellen Spieler aus einem Channel ausließt, wer spricht, uvm. Dieses Programm heißt TeamSpeak Overlay (http://www.teamspeakoverlay.com/).

Nun ist meine Frage: Wie kann man sowas hinkriegen? Man muss doch in gewisser Weise die "Events" von TeamSpeak2 abfangen, oder? Ich verstehe überhaupt nicht, wie so etwas machbar ist.

Ist sowas überhaupt in Python machbar? In was müsste ich mich einarbeiten, um so etwas (ähnliches) auch hinzukriegen? (Ja, ich weiß, dafür muss man pauken ;))

Danke,
~ Chris
Grüßle.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Chrisber hat geschrieben:Nun ist meine Frage: Wie kann man sowas hinkriegen? Man muss doch in gewisser Weise die "Events" von TeamSpeak2 abfangen, oder? Ich verstehe überhaupt nicht, wie so etwas machbar ist.
as steht doch direkt auf der Seite:
Homepage hat geschrieben:TSO works by overlaying a list of the current speakers into the games window, over the top of the game thats running. It does this by directly hooking the DirectX or OpenGL APIs. It then "reads" the Teamspeak Window, to obtain the current speakers. It then draws this on top of the running game.
D.h. also es gibt da das Fenster vom Teamspeak-Client und es enthält eine Kontaktliste oder was auch immer. Diese Elemente werden nun von TSO ausgelesen und auf einem DirectX Overlay dargestellt.
Chrisber hat geschrieben:Ist sowas überhaupt in Python machbar? In was müsste ich mich einarbeiten, um so etwas (ähnliches) auch hinzukriegen? (Ja, ich weiß, dafür muss man pauken ;))
Also der Teil ohne DirectX und Overlays sollte vergleichsweise einfach sein, dazu brauchst du pywin32 und müsstest damit die Fenster auslesen können. Wie DirectX Overlays funktionieren müsstest du in der MSDN nachlesen - vielleicht lässt sich da mit DirectPython etwas recht simpel machen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Hi.
Mir gehts nicht um den Overlay, sondern nur darum, wie man diese Liste halt ausließt. Man kann doch nicht einfach aus einem anderem Programm heraus die Userliste auslesen.

Soweit ich dass bis jetzt herausgefunden habe, werden solche "Events" doch immer per WINDOWS MESSAGES gesendet - richtig?

~ Chris
Grüßle.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Chrisber hat geschrieben:Mir gehts nicht um den Overlay, sondern nur darum, wie man diese Liste halt ausließt. Man kann doch nicht einfach aus einem anderem Programm heraus die Userliste auslesen.
Nein, aber man kann die GUI auslesen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Hi.
Achso läuft das ^^
Also "öffnet" TeamSpeak Overlay praktisch das Fenster intern - also ohne dass es wirklich aufgeht - und liest dieses dann per was aus? ^^

Also ich würde ja gerne suchen, nur ich weiß halt nicht nach was ich da suchen kann :(

~ Chris
Grüßle.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Chrisber hat geschrieben:Also "öffnet" TeamSpeak Overlay praktisch das Fenster intern - also ohne dass es wirklich aufgeht - und liest dieses dann per was aus? ^^
WinAPI. Da wird vermutlich das ``hWND`` (Window Handle - jedes Widget hat ein Window Handle, nicht nur Fenster)) via ``CreateWindow()`` (ich glaube CreateWindow kann Window Handles von Fenstern beschaffen, die es nicht aufgemacht hat) beschafft und dann mit den Methoden der API inspiziert.
Genauere Details weiß ich nicht, ich nutze schon seit einigen Jahren kein Windows mehr. Die MSDN wird dir da zu dem Thema wesentlich mehr sagen können.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten