Текущий архив: 2005.07.31;
Скачать: CL | DM;
ВнизВытащить текст из компонента, находящегося в другой программе Найти похожие ветки
← →
Chaser © (2005-06-02 11:20) [0]Подскажите, как вытащить текст из компонента, находящегося в другой программе ("TListBox" и "TListView").
С "TEdit" и "TMemo" все работает, а с этими почему то нет.
Код:
var
i: integer;
Wnd: hWnd;
WindowText: string;
TrayWnd, BtnWnd: hWnd; // для Button
Control: array [0..127] of char;
TxtLength, TxtLength1: integer;
buffer,bf: string;
begin
Wnd:=FindWindow(nil,PChar("Test");
if Wnd=0 then Exit;
Wnd:=GetWindow(Wnd,GW_CHILD);
GetClassName(Wnd,Control,SizeOf(Control));
// ищем нужный контрол
while Control<>"TListBox" do
begin
Wnd:=GetWindow(Wnd,GW_HWNDNEXT);
GetClassName(Wnd,Control,SizeOf(Control));
if Control="TListBox"
then
begin
TxtLength:=SendMessage(Wnd, WM_GETTEXTLENGTH, 0, 0);
TxtLength:=TxtLength+1;
TxtLength1:=SendMessage(Wnd, LB_GETTEXTLEN, 0, 0);
TxtLength1:=TxtLength1+1;
SetLength(buffer, TxtLength);
SetLength(bf, TxtLength1);
SendMessage(Wnd,WM_GetText, TxtLength, longint(@buffer[1]));
SendMessage(Wnd,LB_GetText, TxtLength1, longint(@bf[1]));
Memo1.Text:=buffer;
Memo1.Lines.Add(bf);
end;
end;
end;
← →
Digitman © (2005-06-03 10:58) [1]
> С "TEdit" и "TMemo" все работает, а с этими почему то нет
и не будет работать, потому что буфер для приема текста листбокса должен быть в АП того процесса, которому принадлежит окно листбокса
- открой "чужой" процесс (OpenProcess) - получишь хэндл этого объекта,
- аллокируй в "чужом" АП буфер нужного размера (VirtualAllocEx) - получишь адрес этого "чужого" буфера,
- отправь "чужому" листбоксу сообщение LB_GetText, указав только что полученный тобой адрес "чужого" буфера
- скопируй содержимое "чужого" буфера в заранее подготовленный тобой "свой" буфер того же размера (ReadProcessMemory),
- уничтожь "чужой" буфер (VirtualFreeEx)
- закрой "чужой" процесс (CloseHandle)
- получи удовольствие)
← →
Chaser © (2005-06-03 16:17) [2]С ListBox"ом получилось,
SendMessage(Wnd,LB_GetText, 0, longint(@buffer_listbcom[1]));
теперь бы разобраться с TListView
Страницы: 1 вся ветка
Текущий архив: 2005.07.31;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.04 c