Hallo,
dies ist mein erster Post in diesem Forum und hab auch gleich ein paar fragen 😉
Ich bin zurzeit dabei ein eigenes AdminInterface für Gameserver zu erstellen. Dabei läuft das Programm momentan nur lokal auf dem Server, soll aber später Remote gesteuert werden können.
Alle Spieleserver werden in einem Datagridview dargestellt, mit den Butons Start und Stop.
Nun möchte ich um den Desktop nicht unübersichtlich werden zu lassen und als Vorbereitung für die Remotesteuerung, die GameKonsolen verstecken und die Ein-/Ausgaben über mein AdminInterface leiten. Dazu habe ich versucht die RedirectStandardInput/Output Properties der Process Klasse zu benutzen, allerdings funktioniert das momentan nur mit cmd Konsolenfenstern.
Spiele, die vorgesehen sind, sind z. B. Call of Duty 4-8, die über eine eigene Konsole verfügen.
Ist es überhaupt möglich mein Vorhaben mit diesen Spielen umzusetzen?
Das hilft dir jetzt vielleicht nur bedingt weiter, aber hast du schonmal daran gedacht, dein Admin-Interface mit ASP.NET zu realisieren?
Dadurch hättest du:
Edit:
Ich hab' gerade gemerkt, dass ich dein Vorhaben noch nicht so ganz verstanden habe.
Du kannst versuchen den StandardError auszulesen. Vielleicht gibt das Spiel darüber die Konsole auch noch aus. Ansonsten kannst du eigentlich nur noch das Internet durchforsten, ob man den Server mit einem kommandozeilenschallter dazu bringen kann die Logs darüber auszugeben.
Könnte hiflreich sein: Console als Steuerelement einbinden
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Hallo,
das wird so nicht funktionieren, da die Spiele meistens eine eigene Implementierung einer Konsole (z.B. mit DirectX oder OpenGL) anzeigen (d.h. diese hat nichts mit der Windows Konsole zu tun und kennen auch meistens kein Redirect).
Ich selber kenne es noch von Sacred 2 so (an dem ich damals mitgearbeitet habe).
Gibts es eine Möglichkeit diese speziellen Spiele Konsolen auszulesen?
Der Input ist denke ich mal nicht so schwer, aber ich hab keine nicht allzu komplizierte Idee die Konsole auszulesen.
Ich wäre für jede Idee oder Anregung, vieleicht ein paar Code Schnipsel, dankbar. Allerdings erwarte ich von niemandem eine Copy/Paste-Vorlage zu machen.
Noch eine Idee: Die Server schreiben bestimmt ihre Logeinträge in eine Datei. Und das sollte sich ja auslesen lassen
Leider werden keine Logs geschrieben, bzw. sie bringen nichts zum administrieren.
Hallo Let it Burn,
da wird es keine pauschale Antwort geben. Wie und ob man überhaupt die Konsole eines bestimmten Spiels auslesen kann, hängt davon ab, wie die Konsole in dem jeweiligen Spiel technisch realisiert ist.
Zum Auslesen von Informationen aus fremden Fenstern wirst du im Forum und im Netz sicher fündig. Aber es gibt wie gesagt kein Patentrezept, das immer funktioniert.
herbivore
Danke für eure Antworten.
Ich werde mich da mal etwas durchlesen...
Für den Anfang habe ich einfach mit der WinAPI die Konsolen versteckt und lasse sie durch einen Kontextmenüpunkt anzeigen.
Was haltet ihr davon den Client an die HWID des jeweiligen Benutzers zu binden, die dann immer beim Server überprüft wird?
Hallo Let it Burn,
gar nichts. Auch wenn Spiele natürlich weniger kritisch sind als Business-Anwendungen, sollte man Hardware-Verdongelung gar nicht erst bahnbrechen lassen. Allerdings ist die Frage ist wirklich offtopic. Deshalb verweise ich nur auf bestehende Threads, die das Thema behandeln und meine Ablehnung begründen, z.B. Lizenzierungsmechanismus für Program selbst programmieren, Sicherheit durch Lizenzvergabe für Software, Konzept Lizenzgenerator und -prüfer, Id berechnen, die einen Recher eindeutig identifiziert. In diesem Thread hier sollten wir das nicht vertiefen.
herbivore
Was man sagen kann ist also, dass man außer für die cmd keine Allround-Lösung basteln kann. Man müsste also hingehen und mit Hilfe der WinAPI das entsprechende Handle herausfinden um dann die Textbox auslesen zu können.
Falls ich etwas falsch verstanden habe, oder es eine elegantere/bessere Lösung gibt, weist mich bitte zurecht =)
Hallo Let it Burn,
natürlich kann man mit Win32 den Handle und den Text einer fremden Textbox auslesen, aber das funktioniert dann eben nur, wenn es sich überhaupt um Win32-Controls handelt. Und das muss ja nicht sein. Die Anwendung kann die Darstellung auch selberzeichnen, ganz ohne Controls oder mit ganz eigenen Controls.
Man kann also sagen, dass man für bestimmte Techniken der Realsierung der Konsole (z.B. Windows- Eingabeaufforderung, Win32) vermutlich relativ standardisiert an den Text kommt, für andere nur mit Klimmzügen und bei bestimmten Techniken (alles selber gezeichnet, Texte im Hauptspeicher verborgen oder gar verschleiert/verschlüsselt) auch gar nicht. Es gibt eben keine allgemeingültige Lösung, die immer funktioniert.
herbivore
Die Konsolen werden zu geschätzt 99% nicht über WinAPI realisiert, sondern sind normalerweise direkte Steuerelemente der jeweiligen Game-Engine bzw. selbstentwickelt. Deshalb wirst du da auch keine Möglichkeit finden, das auszulesen, falls es keine Schnittstelle gibt.
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Könnte man die Gamekonsole auf einer Form zeichnen, sodass sie in meiner Anwendung integriert ist und kein separates Programm ist?
Hallo Let it Burn,
ich denke, auf deine letzte Frage gilt die Antwort von malignate auf die Frage davor analog. Sprich, wenn das Spiel nicht extra etwas dafür anbietet, wird es wohl nicht generell gehen.
herbivore
Schade.
Dann kann hier abgeschlossen werden...
Danke für eure Hilfe 👍