Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

прочесть что написано в Label другого приложния [D7, WinXP]


Страницы:   1 2

ivanoff ©   (2009-08-25 16:06:00) 

получаю так

SendMessage(H, WM_GETTEXT, 256, LParam(@S[1]));

... но только с Edit, Button, Panel, ...
как посмотреть что в Label написано, по его координатам


ivanoff   (2009-08-26 14:52:00) [21]

есть прога которая принимает некоторые данные от своей серверной части в зашифрованном виде и визуализирует посредством Label

задача получить и использовать инфу которую ставят в те самые Label

"они" не хотят делится этой инфой поэтому надо выдергиватить из их проги


> зачем тут нужен глобальный хук, если известен конкретный
> процесс и конкретное окно с конкретным лейблом)

а мне всеравно как лишь бы данные из Label получить

> Что значит "видит" ?

я сделал тестовую программу положил там Label
... так как брал текст из TEdit, к примеру из TLabel не берет
... с примером из [5] - берет


> Конкретно спрашивай, что осталось непонятым.

так как тока разбираюсь с DLL не пойму че не так испаравил дабы по [5] техт получить а не рисовать сверху

цитата из нета
"Выдрать текст из Label'a можно, но для этого придется перехватывать TextOutW, так как это так сказать последняя инстанция, когда текст ещё существует в своем состоянии текста"


Сергей М.   (2009-08-26 13:59:00) [22]


> а ведь Label-то видит


Что значит "видит" ?
Прошу чтоб нормальным а не литературным языком объяснили)

И еще прошу,  чтоб нормальным а не литературным языком объяснили, зачем тут нужен глобальныйхук, если известен конкретный процесс и конкретное окно с конкретным лейблом)


Leonid Troyanovsky   (2009-08-26 13:57:00) [23]


> ivanoff   (26.08.09 13:22) [11]

> а ведь Label-то видит

Значит, это не TLabel, а TStaticText. Класс окна выяснял?

Ну, или там не GetWindowText.
Хотя, исходный образчик, судя по всему, для дела не пригоден.

> не литературным языком объяснили в чем трабл

Нелитературным нельзя, забанят.

> или как правельно делать надо

Конкретно спрашивай, что осталось непонятым.

--
Regards, LVT.


ivanoff   (2009-08-26 13:22:00) [24]


> > вроде то, даже обрадовался
>
> Откуда это? По ссылке [5]? :(
>
> Во-первых, GetWindowText работает с окнами, TLabel окна
> не имеет.


а ведь Label-то видит - вот и обрадовался, есть от чего плясать, тока там много всего разбираюсь чего надо, чего не надо .... но как говорил с DLL не работал

- а я и не говорил что в этой области знания у меня большие
- чтаю, просвесщаюсь, но пока недопер - вот и прошу чтоб нормальным а не литературным языком объяснили в чем трабл или как правельно делать надо


Сергей М.   (2009-08-26 12:19:00) [25]


> Это тоже из [5]?


Угу. Шедевр)
Заглянул из любопытства, а там .. Черт ногу сломит как там понахреноверчено ..


Leonid Troyanovsky   (2009-08-26 09:43:00) [26]


> Сергей М. ©   (26.08.09 09:17) [8]

> Sleep(INFINITE) - это сильно.

Поэзия :)

Это тоже из [5]?

--
Regards, LVT.


Сергей М.   (2009-08-26 09:17:00) [27]

Sleep(INFINITE) - это сильно.


Leonid Troyanovsky   (2009-08-26 08:41:00) [28]


> ivanoff   (26.08.09 04:13) [6]

> вроде то, даже обрадовался

Откуда это? По ссылке [5]? :(

Во-первых, GetWindowText работает с окнами, TLabel окна не имеет.
Во-вторых,  PChar должен указывать на буфер, распределенный
в приложении, например, buf: array [0..255] of Char.
И, в-третьих, при таких базовых знаниях можно смело полагать,
что получить текст из чужого TLabel невозможно.

--
Regards, LVT.


ivanoff   (2009-08-26 04:13:00) [29]

вроде то, даже обрадовался

переделал так
function MyGetWndText(Wnd: HWND): PChar; stdcall; export;
var
 Point: TPoint;
 Buffer: array[0..256] of char;
begin
 GlobalData^.Wnd := Wnd;
 GlobalData^.cancapture := True;
 Point:= Mouse.CursorPos;

 Windows.ScreenToClient(Wnd, Point);

 if (Point.x < 0) or (Point.y < 0) then
   GetWindowText(Wnd, Buffer, SizeOf(Buffer) - 1);

 Result := Buffer;
end;

...
exports
 MyGetWndText name 'MyGetWndText';
...


вызываю так

...
function MyGetWndText(Wnd: HWND): PChar; stdcall; external 'TextCapture.dll';
...
var
 Wnd: HWND;
begin
 Wnd := WindowFromPoint(Mouse.CursorPos);
 Label1.Caption := MyGetWndText(Wnd);
end;


чтоб функция техт возвращала

компилятор ругается, ОС плясать начинает
Access violation at address 099CCCBE in module 'TextCapture.dll'. Read of address 00000000.

просьба ткнуть носом - с dll полный профан я


Игорь   (2009-08-25 18:47:00) [30]

TextOut Hook

http://www.onlinedisk.ru/file/204375/


Сергей М.   (2009-08-25 17:24:00) [31]

http://www.google.ru/search?q=%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82+WinAPI-%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D0%BE%D0%B2&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox


ivanoff   (2009-08-25 17:11:00) [32]


> Сергей М. ©   (25.08.09 16:48) [2]


уже легче :)

.... можно по подробней?


Сергей М.   (2009-08-25 16:48:00) [33]


> остается только ocr


Или внедрить туда свой код, перехватывающий TextOut()


Медвежонок Пятачок   (2009-08-25 16:10:00) [34]

лабел не оконный, так что остается только ocr


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо