Czytanie odpowiedzi z zewnętrznej aplikacji

0

Chciałbym sczytać wiadomość z zewnętrznej aplikacji (.exe), która wyświetla wiadomość w czymś takim jak na screenie poniżej:

Próbowałem poprzez StandardOutput:

var process = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = pathToExeFile,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
    },
};

process.Start();

var output = process.StandardOutput.ReadToEnd();
var err = process.StandardError.ReadToEnd();

process.WaitForExit();

ale problem w tym, że ta aplikacja najzwyczajniej nie wyświetla tej informacji standardowym strumieniem. W jaki sposób mogę dobrać się do tej informacji wyświetlanej w tym takim 'dialog boxie'? Dodam, że nie mam dostępu do kodu źródłowego tej aplikacji.

1

To nie będzie proste. To wygląda na aplikację konsolową, więc rozwiązań jest kilka, np:

  • uruchamiasz ją przez zewnętrzną aplikację (swoją) z przekierowaniem outputa i wtedy Ty jesteś odpowiedzialny za całego ouputa; co w przypadku aplikacji większej niż jedno polecenie raczej nie wyjdzie
  • z wariackich numerów to możesz zrobić screenshota i spróbować odczytać to jakimś ocrem i w ogóle sztuczna inteligencja... Rozjeb totalny i raczej strzelanie z armaty do muchy
  • no i coś, co ma szansę... Grzebanie w oknach za pomocą WinApi. Czyli FindWindow i... Zacząłbym od tego -> https://docs.microsoft.com/en-us/windows/console/console-screen-buffers
1

To co chcesz znaleźć nazywa się "screen scraping" robiłem coś takiego na jakimś starożytnym terminalu IBM, będziesz mieć z tym sporo zabawy ;P

Znalazłem coś takiego:
https://stackoverflow.com/questions/30511319/screen-scraping-a-console-window-from-net

Przejrzyj też te wątki z komentarzy i sprawdź czy któraś odpowiedź pomoże.

1 użytkowników online, w tym zalogowanych: 0, gości: 1