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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2017, 11:24   #1
BarsDG
Пользователь
 
Регистрация: 06.09.2010
Сообщений: 47
По умолчанию Получить данные по Handle или ID

Доброе время суток Вам знатоки.
Есть сторонняя прога с которой мне необходимо собрать данные для формирования отчета.
Данную прогу прилагаю, установки не требует! для наглядности того, какие данные требуется получить, нужно через меню или иконки в виде папки открыть лежащий в корне программы файл *.blk

Код:
var
  H1, H2, H3: HWND;
  s:array [0..255] of Char;
begin
H1 := FindWindow(nil, 'BlockSurf');
H2 := FindWindowEx(H1, 0, nil, '0000E900');
H3 := FindWindowEx(H2, 0, 'Text', nil);
Sendmessage(H3, WM_GETTEXT, 20, Integer(@s));
Memo1.Lines.Add(string(s));
end;
но ни чего не получается! К сожалению с данной тематикой практики 0, поэтому очень надеюсь на вашу помощь.
Вложения
Тип файла: rar BS.rar (1.11 Мб, 27 просмотров)
BarsDG вне форума Ответить с цитированием
Старый 16.10.2017, 14:43   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Вместо WM_GETTEXT воспользуйтесь GetWindowText()
Если не сработает, тогда забейте - не тот уровень, судя по всему.
waleri вне форума Ответить с цитированием
Старый 16.10.2017, 18:12   #3
AbakBarama
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 57
По умолчанию

BarsDG, структура BLK-файла несложная и понятная даже без реверса программы: несколько текстовых строк и несколько массивов типа double. Возьмите из файла первичные данные и обрабатывайте их как угодно. Будет проще, чем вытягивать их из окон чужого приложения.
AbakBarama на форуме Ответить с цитированием
Старый 17.10.2017, 08:39   #4
BarsDG
Пользователь
 
Регистрация: 06.09.2010
Сообщений: 47
По умолчанию

к сожалению выходит тоже самое... либо пустая строка, либо иероглифы.
Цитата:
Сообщение от waleri Посмотреть сообщение
Вместо WM_GETTEXT воспользуйтесь GetWindowText()
Если не сработает, тогда забейте - не тот уровень, судя по всему.
к сожалению выходит тоже самое... либо пустая строка, либо иероглифы.
BarsDG вне форума Ответить с цитированием
Старый 17.10.2017, 08:50   #5
BarsDG
Пользователь
 
Регистрация: 06.09.2010
Сообщений: 47
По умолчанию

Цитата:
Сообщение от AbakBarama Посмотреть сообщение
BarsDG, структура BLK-файла несложная и понятная даже без реверса программы: несколько текстовых строк и несколько массивов типа double. Возьмите из файла первичные данные и обрабатывайте их как угодно. Будет проще, чем вытягивать их из окон чужого приложения.
Согласен, но ведь он зашифрован или что то типа того... и я не знаю как эти данные перевести в логичный вид. Если можно, по подробнее объясните пожалуйста.
BarsDG вне форума Ответить с цитированием
Старый 17.10.2017, 17:23   #6
AbakBarama
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 57
По умолчанию

Нет там никакого шифрования. Строки и двоичные данные записаны в файл, только и всего. И понять "устройство" файла можно даже на глаз.

Есть заголовок размером 448 байтов, в нём 11 40-байтовых строк и 2 4-хбайтовых целых числа. Есть 6 одинаковых блоков с данными, каждый размером по 256156 байтов. В каждом блоке есть свой 40-байтовый заголовок и 4 структуры по 64029 байтов. В каждой структуре есть свой 13-байтовый заголовок и массив из 8002 чисел типа double.

Всё. Повторюсь, расположение данных можно понять, внимательно посмотрев на файл в хекс-редакторе. В данном случае даже не надо анализировать программу на предмет того, как она работает с файлом.
AbakBarama на форуме Ответить с цитированием
Старый 17.10.2017, 19:56   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от BarsDG Посмотреть сообщение
либо иероглифы
"Иероглифы" это странно.
Код покажете?
waleri вне форума Ответить с цитированием
Старый 19.10.2017, 11:18   #8
BarsDG
Пользователь
 
Регистрация: 06.09.2010
Сообщений: 47
По умолчанию

Спасибо всем!!!
С Hex не смог разобраться, поэтому применил распознавание текста.
BarsDG вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить handle стороннего окна системы Foxpronet Общие вопросы Delphi 4 21.05.2015 10:21
Как получить данные из TVirtualStringTree, зная его Handle? fedorov2012 Общие вопросы Delphi 30 05.07.2014 21:11
Получить Handle или PID из процесса в котором dll... rangel Win Api 2 09.02.2012 12:44
Как получить Handle моей программы? Eros Общие вопросы C/C++ 0 12.05.2010 19:29
Как получить данные с COM-порта или другого любого порта? DeLure Общие вопросы C/C++ 5 20.09.2007 00:50