![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
прочесть что написано в Label другого приложния [D7, WinXP]
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