![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Достать данные [D6, Win95/98]
borg © (2002-10-12 18:28:00)Я вытащил все Handel и с помощью SendMessage(1620,WM_GETTEXT,0,0); пытаюсь этот текст просмотреть, но :-(((
SendMessage возвращает Integer, а мне надо бы узнать написанный текст. Зарание большое спасибо.
Юрий Зотов (2002-10-12 23:57:00) [1]Не проверял, но должно работать.
function GetWndText(Wnd: HWND; MaxLength: integer): string;
var
Buff: array of char;
begin
SetLength(Buff, MaxLength + 1);
try
SetString(Result, Buff,
SendMessage(Wnd, WM_GETTEXT, SizeOf(Buff), @Buff[0]))
finally
Buff := nil
end
end;
И вопрос - почему Вы используете числовые константы? Разве хэндлы окон программы не меняются при каждом ее новом запуске?
Anatoly P (2002-10-12 22:30:00) [2]Это я для примера - а вообще используй динамические массивы
buff : array of char;
а далее - setlength(buff,NewLength);
NewLength - любое целое число
Shrek (2002-10-12 20:08:00) [3]var arr: array [1..$FF] of pChar;
Text: string;
SendMessage(handle, WM_GETTEXT, SizeOf(Arr), Integer(@Arr));
Text := @Arr;
borg (2002-10-12 19:20:00) [4]>>Anatoly P
Получилось:-), но последний вопрос, массив размером [127], а
в Edite всего 4 символа(но в другой момент может быть хоть сколько) и все не дастоюшие символы заполяются от фонаря, как этого избежать.
ZrenBy (2002-10-12 18:47:00) [5]var sStr:String[255];
SendMessage(Handle1,WM_GETTEXT,254,PChar(@sStr[0]));
или @sStr[1] - не помню уже, но вроде 0
Anatoly P (2002-10-12 18:46:00) [6]buff : array[0..127] of char;
GetWindowText(Handle1,buff,sizeof(buff));
Попробуй, если не то , то не знаю
borg (2002-10-12 18:41:00) [7]Извиняюсь за неполный вопрос. Мне надо скопировать текст из DBEdit который находится в другой программе(она запущена) в мою в Edit1
{Ищем хэндл DBEdit}
handle1:=FindWindowEx(2196,0,nil,pchar(wind_name));
if button_handle=0 then
begin
result:=false;
exit;
end;
SendMessage(Handle1,WM_GETTEXT,0,0);
Anatoly P (2002-10-12 18:33:00) [8]Не совсем понял, но может быть GetWindowText()
ZrenBy (2002-10-12 18:33:00) [9]WM_GETTEXT
wParam = (WPARAM) cchTextMax; // number of characters to copy
lParam = (LPARAM) lpszText; // address of buffer for text
+
WM_GETTEXTLENGTH
wParam = 0; // not used; must be zero
lParam = 0; // not used; must be zero