Jak przechwycić tekst z okna PUTTY

0

Witam, mam taki problem. Korzystam z klienta PUTTY (lekko zmodyfikowany - nie mam kodu źródłowego). Chciałbym moim programem na bieżąco przechwytywać tekst z ekranu. Jak pobrać uchwyt do tych danych?

Mniemam że jako że PUTTY jest opensource to sprawa teoretycznie jest prostrza, tylko że ja nie wiem jak się za to zabrać.

Znam się w miare na programowaniu w Delphi/Lazarus jednak w takie manipulacje "cudzą" pamięcią jeszcze się nie bawiłem.

0

Jeśli to ma być tekst z okna, a nie z konsoli to tu masz rozwiązanie:
Pobieranie uchwytów Edit innej aplikacji.

0

Najprościej byłoby logować do pliku (putty to umożliwia) i odczytywać cyklicznie plik lub użyć ShellChangeNotifier. Kwestia tylko czy dostęp nie będzie zablokowany.

0

No właśnie ta wersja putty ma zablokowane opcje settings. Cała aplikacja ma zagnieżdżoną sesję w kodzie i to jedyne co pozwala uruchomić ten build. Chyba że logowanie można włączyć poprzez odpowiedni parametr podczas uruchomienia (szukałem ale nie znalazłem).

Proszę o jakąś lepszą wskazówkę odnośnie złapania tego uchwytu, bo to nadal dla mnie magia :(

0
Kaszel napisał(a)

Proszę o jakąś lepszą wskazówkę odnośnie złapania tego uchwytu, bo to nadal dla mnie magia :(

W linku, który podałem jest do ściągnięcia kod, napisany przez 'olesio'. (THX)
Przeanalizuj kod i po sprawie, jest tam wszystko jak na dłoni, jak pobrać uchwyt okna przez FindWindow, a następnie jak dobrać się do poszczególnych kontrolek.

0

Sprawa nie jest taka prosta jak Młody pisze. Co innego typowe kontrolki windowsowe, a co innego okno konsoli. Kobminowałem, ale nic mi nie wyszło. Poza tym jak mamy FileManager FAR albo cmd.exe i uruchomimy rar.exe to mamy wyniki w tym samym oknie natomiast jak uruchomimy putty.exe adres-serwera.net to tworzy się nowe okno, także nie działają mi znalezione na google metody odczytu z konsoli ani próby uruchomienia z pod TDosCommand. Może ktoś bardziej doświadczony jeszcze się tutaj wypowie jak można odczytać konsolę obcego procesu czy okna, które jest tworzone na nowo przez inną aplikację. Ja znalazłem tylko jakiś art na blogu chyba gdzie ktoś podawał jak sprawdzić czy okno Putty jest otwarte i je akrtywować (ale to akurat banały, wiadomo), pokazał też jak wysłać do okna tekst, ale nie ma najważniejszego czyli odczytu treści z niego. Także link do wątku, który podał Młody się nie przyda, bo wyszukiwanie kontrolek oraz wysyłanie im komunikatów tutaj nic nie da. Uzyskamy na przykład tylko tytuł aplikacji i tyle. P.S. Poprosiłem Miśkad żeby zerknął na ten temat, bo może zna jakiś sposób odczytania konsoli obcego procesu w nowym oknie, a ja po prostu mogłem źle googlować, to On się tutaj wypowie czy widzi taką możliwość.

0

z tego co widzę to wynik jest malowany bezpośrednio na oknie - nie ma tam żadnej kontrolki do wyświetlania tekstu a tekst jest przetrzymywany w wewnętrznych strukturach

0

W ogóle, skoro Twoja wersja ma zablokowane ustawienia, to co stoi na przeszkodzie, żeby skorzystać z oficjalnej wersji programu?

Jeżeli chodzi o okno konsoli, to myślę, że można podejść od innej strony.

Nie wiem, jak inne wersje, ale standardowa wersja PUTTY posiada konsolę z czcionką o stałej szerokości znaków tak, jak tryb tekstowy DOSa.

Nie trzeba kombinować z uchwytami, czy wchodzeniem do pamięci programu PuTTY.

Chodzi o to, żeby program zczytujący w krótkich odstępach czasu wykonywał zrzut fragmentu ekranu, na którym jest konsola (należy ręcznie ustawić co do piksela obszar konsoli i zrzutu ekranu), po wykonaniu zrzutu ekranu program dzieliłby obraz na 80x25 bloków (jeden blok to jeden znak w konsoli), a potem wykonywałby dopasowanie bloku do znaku. Tutaj, w odróżnieniu od OCR, sprawa jest bardzo prosta, ponieważ czcionka jest dana, możliwych obrazków (bez uwzględniania kolorów) jest 256, a więc dla każdego obrazka znaku w zrzucie wystarczy rozróżnić 2 kolory i sprawdzić, z którym znakiem rysunek jest identyczny.

0

a w ogóle jest wymóg że to MUSI być putty?
putty to klient protokołu SSH, może po prostu chodzi ci o stworzenie wlasnego klienta?

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