Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[erledigt] Game Console Redirect Input/output
Let it Burn
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

[erledigt] Game Console Redirect Input/output

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
felix
myCSharp.de - Member



Dabei seit:
Beiträge: 174

beantworten | zitieren | melden

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:
1) keine störenden Konsolen-Fenster
2) Theoretisch von überall Zugriff auf die Verwaltung der GameServer, ohne ein Extraprogramm installieren zu müssen.


Edit:
Ich hab' gerade gemerkt, dass ich dein Vorhaben noch nicht so ganz verstanden habe.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von felix am .
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4.221
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Könnte hiflreich sein: Console als Steuerelement einbinden
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.173

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers
Let it Burn
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

Noch eine Idee: Die Server schreiben bestimmt ihre Logeinträge in eine Datei. Und das sollte sich ja auslesen lassen
private Nachricht | Beiträge des Benutzers
Let it Burn
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

Leider werden keine Logs geschrieben, bzw. sie bringen nichts zum administrieren.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Let it Burn
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

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.

[offtopic]Was haltet ihr davon den Client an die HWID des jeweiligen Benutzers zu binden, die dann immer beim Server überprüft wird?[/offtopic]
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Let it Burn
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

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 =)
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
malignate
myCSharp.de - Member

Avatar #avatar-3206.png


Dabei seit:
Beiträge: 742

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Let it Burn
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

Könnte man die Gamekonsole auf einer Form zeichnen, sodass sie in meiner Anwendung integriert ist und kein separates Programm ist?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Let it Burn
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

Schade.
Dann kann hier abgeschlossen werden...

Danke für eure Hilfe
private Nachricht | Beiträge des Benutzers