1. #1
    Avatar von Baumstumpf
    Registriert seit
    04.12.2011
    Beiträge
    139
    Thanked 110 Times in 32 Posts

    Standard Bereits laufende Console auslesen...

    Hi,

    ich würd gern die laufende Console eines Spiels (RocketLeague) auslesen, da in den Logdatein- welche von dieser erstellt werden- die Informationen die ich brauche nicht enthalten sind.
    Die Console ist eine "ConsoleWindowClass".
    Diese Console dürfte eins zu eins wie die CMD-Console sein.
    Einen redirect ("RedirectStandardOutput") kann ich nicht benutzen, da ich die Console nicht starte, sondern das Spiel von selbst.
    Daher muss ich mit der FindWindow-API arbeiten, wobei genau das Problem liegt.

    Ich bekomme nur den Titel der Console, nicht den Inhalt ausgegeben...

    Mein Code:

    Code:
        Private Const WM_GETTEXT As Integer = &HD
        Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
        Private Declare Auto Function SendMessage Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal msg As Integer, _
        ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
        <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
        Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
                                         ByVal childAfter As IntPtr, _
                                         ByVal lclassName As String, _
                                         ByVal windowTitle As String) As IntPtr
        End Function
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim Hwnd As IntPtr = FindWindow("ConsoleWindowClass", "C:\Program Files (x86)\Steam\steamapps\common\rocketleague\Binaries\Win32\RocketLeague.exe")
            Dim Handle As IntPtr = Marshal.AllocHGlobal(1000)
            Dim NumText As Integer = SendMessage(Hwnd, WM_GETTEXT, 500, Handle)
            Dim Text As String = Marshal.PtrToStringUni(Handle)
            MsgBox(Text)
        End Sub

    Dies gibt mir nur den Titel der Console zurück, welchen ich auch verändern kann (das Handle scheint also zu stimmen)...
    Hat jemand ne Idee, wie ich an den Inhalt der Console komme?

    Danke im Voraus

    LG
    Baumstumpf

    Edit: ChildHandles scheint die Console einfach nicht zu haben :/
    Geändert von Baumstumpf (15.06.2017 um 20:14 Uhr)

  2. The Following User Says Thank You to Baumstumpf For This Useful Post:

    Negok (17.06.2017)

  3. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.081
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard AW: Bereits laufende Console auslesen...

    Wird schwierig unter Windows. Wäre Linux eine Option? Dort geht das relativ einfach mit Tools wie reredirect. Die leiten die Ausgabe wahlweise in eine Datei um, oder wie du es möchtest in die Standardausgabe (stdout/stderr).


  4. The Following User Says Thank You to DMW007 For This Useful Post:

    Negok (17.06.2017)

  5. #3
    Avatar von Baumstumpf
    Registriert seit
    04.12.2011
    Beiträge
    139
    Thanked 110 Times in 32 Posts

    Standard AW: Bereits laufende Console auslesen...

    Leider ist Linux keine Option :/
    Dennoch vielen Dank für das raussuchen, ich werd schauen, ob ich eine andere Möglichkeit finde um mein Problem zu lösen

Ähnliche Themen

  1. Ist die Matrix bereits Realität?
    Von Benzol im Forum RealLife
    Antworten: 5
    Letzter Beitrag: 26.12.2014, 16:17
  2. VB.Net Doppelte Eingabe vermeiden [Console]
    Von Impact im Forum .Net
    Antworten: 9
    Letzter Beitrag: 01.05.2012, 16:22
  3. [C#] Console bunt schreiben
    Von The Don of NYC im Forum Showroom
    Antworten: 0
    Letzter Beitrag: 01.09.2011, 03:41
  4. [C#] Fifty! Console
    Von Brainy im Forum Showroom
    Antworten: 0
    Letzter Beitrag: 23.08.2011, 00:43
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.