Jak przechwycić tekst z okna PUTTY

Odpowiedz Nowy wątek
2011-07-07 15:20
Kaszel
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.

Pozostało 580 znaków

2011-07-07 18:49
0

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

Pozostało 580 znaków

2011-07-07 22:49
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.

Pozostało 580 znaków

2011-07-08 13:58
Kaszel
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 :(

Pozostało 580 znaków

2011-07-08 14:21
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.

Pozostało 580 znaków

2011-07-09 00:09
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ść.


edytowany 1x, ostatnio: olesio, 2011-07-09 00:12

Pozostało 580 znaków

2011-07-09 19:51
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


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2011-07-18 01:01
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.

na pewno więcej niż 256, bo font raczej nie będzie 8x8. oprócz tego może być włączony antyaliasing albo ClearType, co trochę skomplikuje sprawę. ale tylko trochę. - Azarien 2011-07-18 03:20

Pozostało 580 znaków

2011-07-18 03:21
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?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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