Pobieranie textu z Label'a z innej aplikacji

Pobieranie textu z Label'a z innej aplikacji
0

Czesc,
chcialbym pobrac text labelk'i z innej aplikcaji. Chcialem to zrobic za pomoca funkcji WinAPI, ale gdzies w sieci wyczytalem se nie jest to mozliwe poniewaz komponenty typu label nie maja uchwytu :(. Jak inaczej mozna rozwiazac ten problem?

Z gory dzieki za pomoc.

AklimX
  • Rejestracja:prawie 22 lata
  • Ostatnio:prawie 14 lat
  • Postów:1218
0

kiedyś miałem taki prog szperacz okienkowy (czy coś na ształt tego) i on zdaje się dawał taką możliwość. chyba, bo to było dawno .


Piszę programy w językach: C, C++, Java, Python, Bash, PHP, SQL.
Przyjmuję zlecenia
WA
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 12 lat
  • Postów:501
0

jak nie maja uchwytu? :|

Kopiuj
Var
Uchwyt:     HWND;
Tekst:      array [0..255] of char;
begin
Uchwyt:=WindowFromPoint(Mouse.CursorPos);
SendMessage(Uchwyt, WM_GETTEXT, SizeOf(Tekst), integer(@Tekst));
Tekst;
result:= Tekst;
end;

W zmiennej tekst masz caption okna (czyli np. labela, memo itp.) pod kursorem...
(Czyli daj to np. do timera :) Albo pobierz sobie uchwyt i daj zamiast WindowFromPont(...))

0

Zrobilem jak mowiles, ale nie dostalem textu labela tylko caption okna w ktorym sie znajdowal. Z odczytem textu z EditBox czy StaticText nie bylo problemu.

0

Znalazlem cos takiego: "Komponenty graficzne nie mogą się znajdować w ognisku. Są pożyteczne dla złożonych formatek, które muszą wyświetlić wiele elementów sterujących. Nie posiadają uchwytu, dzięki czemu "zabierają" mało zasobów systemu. Przykładowymi elementami graficznymi są : etykiety, przyciski na pasku narzędzi, ikony." Znalazlem to na http://www.kaeii.weia.po.opole.pl/dyplomy/Delphi/lekcja_1/Etapy.htm

Jak mozna wywnioskowac Etykiety nie maja uchwytu :(, wiec jak mozna wyciagnac z nich text? Ma ktos jakis pomysl?

LO
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 19 lat
0

Tak to prawda elementy typu label nie posiadają uchwytu. Jeśli chcesz odczytać etykietę musiałbyś prawdopodobnie wyciągnąć ją z zasobów programu, ale nie z każdego programu się tak da, niestety.


Jak nie myślisz to nie wymyślisz
0

Da sie odczytac zasoby tego programu, tylko problem tkwi w tym ze text tej labelki zmienia sie w zaleznosci od zaistnialych warunkow. Wymyslilem cos innego: zawartosc tej labelki musi siedziec gdzies w pamieci, tylko problem w tym jak bezposrednio odwolac sie do niej pod NT'kami zeby nie otrzymac zadnego bledu? Probowalem tak:

Kopiuj
function CzytajZPamieci(segment_:word;offset_:dword):word;
begin
asm
mov ax, segment_;
mov esi, eax;
mov ebx, offset_;
mov al, byte ptr es:[ebx];
mov result,ax;
end;
end;

Ale konczylo sie to "Project Poroject2.exe raised exeption class EAccessVoilation with message 'Access voilation at address 004569A5 ..."
Tryb zgodnosci tez nic nie pomogl :(.</delphi>

Kopiuj
RO
  • Rejestracja:ponad 20 lat
  • Ostatnio:około 14 lat
0

Ma ktos jakis inny pomysl? (ten post pozyzej byl moj)

SA
  • Rejestracja:około 22 lata
  • Ostatnio:około 16 lat
0

Kazdy element typu Label ma rowniez swoj uchwyt i jest calkowita mozliwosc jego pobrania.
Pobierz np programik Lofixa z jego strony chyba www.lofix.iglu.cz


tu nic nie ma w tym podpisie
RO
  • Rejestracja:ponad 20 lat
  • Ostatnio:około 14 lat
0

Pod tym adresem sa same zdiecia z jakichs imprezek ;), mogl bys podac nazwe tego programu?

wesoledi
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 5 lat
0

mozesz sprobowac zrobic printscreen formy z tym labelem i odczytac... na 4p jest prgoramik do odczytywania tekstu z obrazka :)

jak nie maja uchwytu?

a sprobuj pobrac: Tlabel.handle ??


+1 post
SA
  • Rejestracja:około 22 lata
  • Ostatnio:około 16 lat
0

Niektore aplikacje sa tak robione ze uchwytow kontrolki nie maja. Przewaznie maja jednak gdy sa standsrdowo robione w C++, Delphi itp i wykorzystuja tamtejsze kontrolki. No np IE nie ma uchwytow bo ma swoje kontrolki.
PS
Ten kod co Wasyl na poczatku napisal jest wystarczajacy aby zrobic co chcesz.


tu nic nie ma w tym podpisie
RO
  • Rejestracja:ponad 20 lat
  • Ostatnio:około 14 lat
0

Niestety wydaje mi sie ze label w tej aplikacji nie posiada uchwytu, probowalem pobrac go metoda opisana przez Wasyla ale z marnym efektem. Probowalem tez za pomoca programu "Winspector" ale efekt tez byl zerowy. Probowalem jeszcze za pomoca enumwindows pobrac uchwyty wszystkich "obiektow" w tej aplikacji ale niestety wsrod nich nie bylo zadnego labela. Pomysl z tym programem co czyta text z obrazkow jest bardzo ciekawy, ale tez nie spelnia swojego zadania z 2 powodow: ten label siedzi na ciemnym tle, poza tym aplikacja w ktorej sie on znajduje w wiekszosci bedzie siedziala na trayu, wiec screena nie bedziej jak zrobic. :(
BTW na formie swojego programu wrzucilem labelka i ta metoda Wasyla tez nie dostalem uchwytu do niego tylko do calej formy. :(

Najlepszym rozwiazaniem byl by odczyt zawartosci tego labela bezposrednio w pamieci operacyjnej, gdzie na pewno bym go znalazl, ale program bedzie musial smigac pod NT'kami, gdzie bezposredni dostep do pamieci jest mocno "utrudniony" :(

Ma ktos jeszcze jakas inna koncepcje?

Znalazlem ciekawa rzecz: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/readprocessmemory.asp moze to da jakis efekt :)

WeeR
  • Rejestracja:prawie 22 lata
  • Ostatnio:około 9 lat
  • Postów:605
0

Wg mnie, to wszystko w windowsie posiada swoje uchwyty. Może ten label jest czymś przysłonięty. Tak jest np. w gg, w ustawieniach ,niektóre pola są jakoś dziwnie przysłonięte, że pobiera mi uchwyt np. GroupBox'a.

// czyli twierdzisz, że napis na canvasie ma swój uchwyt? - ŁF

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.