Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2009, 11:44   #1
brato4karik
 
Регистрация: 22.10.2009
Сообщений: 7
По умолчанию Перехват данных с формы

Добрый день всем кто сдель есть, имееться приложение написанное на дельфи, необходимо перехватывать данные с его формы, приложение всегда запущенно одно и всегдна оно активно, помогите кодом или советом
brato4karik вне форума Ответить с цитированием
Старый 20.11.2009, 12:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что за данные?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2009, 12:14   #3
brato4karik
 
Регистрация: 22.10.2009
Сообщений: 7
По умолчанию

значит так на форме имееться многострочное поле вывода незнаю точно толи Memo толи какой то list его класс подмсмотрю в случеае Spy++ но будем считать что это мемо, итак я могу выкхатить адрес активного окна, как мне получить адрес этого элемента (оно же вроде считаеться как дочернее окно) и снять текст который в нем постоянно добовляеться это поле лога работы фасовочного аппарата в нем постоянно добавялеться строка с данными какой фасовщик и скока насыпал, например
1 40,1
2 41,2
3 41,1
2 41,9
1 40,3
2 29,6
1 40,1
3 40,2
2 41,2
brato4karik вне форума Ответить с цитированием
Старый 20.11.2009, 12:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как мне получить адрес этого элемента
FindWindowEx(Окно,0,Типполя,nil);
Даст тее хендл если правильно параметры дашь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2009, 13:00   #5
brato4karik
 
Регистрация: 22.10.2009
Сообщений: 7
По умолчанию

Ок получил хендл, параметр Окно - окно родитель?

предполжим я имею хендл элемента что дальше ?

Последний раз редактировалось Stilet; 20.11.2009 в 13:06.
brato4karik вне форума Ответить с цитированием
Старый 20.11.2009, 13:08   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Дальше посылаешь соответствующее сообщение, которое окно обработает.
Для этого нужно знать на какие сообщения окно отреагирует так как тее нужно.
Если это стандартные сообщения то смотри в MSDN что-то наподобие EM_GETLINE
Иначе... Иначе дело дрянь...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2009, 13:26   #7
brato4karik
 
Регистрация: 22.10.2009
Сообщений: 7
По умолчанию

так вроде стало понятней,
у меня будет h хендл окна (элемента), какой функцией востользоваться что бы послать сообщение что бы получить текст строки, вот Spy++ вернул вот что когда я подсветил нужное мне окно
message: em_replacesel
wParam 000000
lParam 00D90741(pointer to string)
"123 123 33"
вот в кавычках те данные которые на экране выводяться
brato4karik вне форума Ответить с цитированием
Старый 20.11.2009, 13:31   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
var buf: array[0..256] of WCHAR;
begin
  SendMessage(h, em_replacesel, 0, (LPARAM)@buf);
Ну тут несколько моментов, определится нужен ли WCHAR или CHAR хватит, и что-такое em_replacesel найти его числовое значение.
p.s. вроде не напутал с lparam и wparam
BOBAH13 вне форума Ответить с цитированием
Старый 20.11.2009, 13:38   #9
brato4karik
 
Регистрация: 22.10.2009
Сообщений: 7
По умолчанию

Ок ща попробую нет не напутал переписал с монитора точно lparam

ну вот мой кусок кода чето не работает помогите плиз все виснет но компилиться
Код:
procedure Tfff.FindAndDestroyButtonClick(Sender: TObject);
var
 h:HWnd;
 l:Hwnd;
 m:TMsg;
 r:TRect;
 buf: array[0..256] of WCHAR;
begin
 h := FindWindow(nil,'Form1');
 Label1.Caption := inttostr(h);
 l := GetWindow(h,gw_Child);
 Label2.Caption := inttostr(l);
 if h=0 then exit;
 //SendMessage(h, WM_DESTROY, 0,0);
 //GetMessage(m,l,0,0);
 //GetMessage(m,l,EM_REPLACESEL,0);
 
  SendMessage(l, lb_GetItemRect, 0, lparam(@buf));
  Label3.Caption :=inttostr(m.lParam);

end;

end.
какое сообщение отправить полю Мемо?

Последний раз редактировалось Stilet; 23.11.2009 в 15:47.
brato4karik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление данных подчиненной формы из другой подчиненной формы smoky Microsoft Office Access 2 15.08.2009 15:28
проверка данных формы kondrnastya JavaScript, Ajax 0 29.07.2009 14:44
AlphaControls - перехват меню заголовка формы chandrasecar Компоненты Delphi 1 07.05.2009 09:17
Обработка данных из формы Damhurz PHP 5 14.04.2009 15:39
Перехват данных Socol Работа с сетью в Delphi 1 19.02.2007 13:47