Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

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


Ответ
 
Опции темы
Старый 10.10.2011, 19:01   #1
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию Считать текст с окна

Допустим есть такое окошко: http://imageshack.us/photo/my-images/69/averz.jpg/

Нужно тупо считать весь текст с него. Хэндл окна нахожу без проблем, но как текст вытащить? Как найти хэндл формы текста? Перебирал - нифига не подобрал Через WinSight не совсем понял, как вытянуть указатели на отдельные элементы..

То, что удалось склепать:

Код:
program Project1;

uses
    Windows, Messages, Dialogs, Classes, SysUtils;

var
  H, H2: HWND;
  l: integer;
  s: ansistring;
begin
  H:=FindWindow('Sym_Common_Scan_Window', nil);
  H2:=FindWindowEX(H, 0, 'StaticText', nil);

  //в случае удачи выводим первое окно
  if h<>0 then
  begin
    SetLength( s, 100 );
    l := SendMessage( h, WM_GETTEXT, 100, lparam( @s[ 1 ] ) );
    showmessage(Copy( s, 1, l ));
  end;

  //в случае удачи выводим второе окно
  if h2<>0 then
  begin
    SetLength( s, 100 );
    l := SendMessage( h, WM_GETTEXT, 100, lparam( @s[ 1 ] ) );
    showmessage(Copy( s, 1, l ));
  end;
end.
Заранее спасибо
WennY вне форума Ответить с цитированием
Старый 10.10.2011, 19:24   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,455
По умолчанию

не правилно читаете текст:
Код:
var
 Buff:array[1..255] of Char;
 s:string;
begin
 GetWindowText(HM2,@Buff,SizeOf(Buff));
 s:=StrPas(Buff);
 ShowMessage(s);
end;
Человек_Борща вне форума Ответить с цитированием
Старый 10.10.2011, 19:35   #3
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Орет на строку s:=StrPas(Buff):

Код:
[Error]Incompatible types: 'Array' and 'PAnsiChar'
WennY вне форума Ответить с цитированием
Старый 10.10.2011, 20:29   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,455
По умолчанию

массив из PChar должен быть. Мой фэил
Человек_Борща вне форума Ответить с цитированием
Старый 10.10.2011, 20:43   #5
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Спасибо, сделал, но он выводит тока самую первую надпись - сканирование по требованию. Из программы spy++ я узнал, что более никаких label'ов окно не имеет, как в таком случае считать текст с неё?

Последний раз редактировалось WennY; 10.10.2011 в 21:43.
WennY вне форума Ответить с цитированием
Старый 10.10.2011, 22:11   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,455
По умолчанию

Думаю, что второй параметр в FindWindowEx не правильно задан.
Код:
hwndChildAfter
Identifies a child window. The search begins with the next child window in the Z order. hwndChildAfter must be a direct child window of hwndParent, not just a descendant window.
If hwndChildAfter is NULL, the search begins with the first child window of hwndParent.
Note that if both hwndParent and hwndChildAfter are NULL, the function searches all top-level windows.
Тебе нужно указать nil
Код:
hm2:=FindWindowEx(hm,nil,'StaticText',nil);
Человек_Борща вне форума Ответить с цитированием
Старый 10.10.2011, 22:15   #7
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Второго параметра там нет, там вообще больше ничего нет кроме одного класса.
WennY вне форума Ответить с цитированием
Старый 10.10.2011, 22:24   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,455
По умолчанию

Для непонятных
Цитата:
If hwndChildAfter is NULL, the search begins with the first child window of hwndParent.
По этому там НУЖНО указать nil..
Человек_Борща вне форума Ответить с цитированием
Старый 10.10.2011, 22:38   #9
WennY
Форумчанин
 
Регистрация: 17.01.2008
Сообщений: 236
По умолчанию

Блин, да указывал я ему ноль, пофиг ему, пустую строку возвращает :|
WennY вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли считать текст с постоянно меняющейся частью Brucebelg Microsoft Office Excel 2 10.06.2010 15:34
Считать текст с картинки KoBRaAndrey Общие вопросы Delphi 10 30.12.2009 18:47
считать текст с чужого TwebBrowsera Askar_g Общие вопросы C/C++ 0 14.05.2009 17:07
Считать значение компонента с чужого окна chipmunk Общие вопросы Delphi 1 12.06.2008 11:22
считать текст из memo - посимвольно prizrak1390 Помощь студентам 10 13.12.2007 22:42