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

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

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

Ответ
 
Опции темы
Старый 16.10.2017, 12:24   #1
BarsDG
Пользователь
 
Регистрация: 06.09.2010
Сообщений: 47
Репутация: 10
По умолчанию Получить данные по 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 Мб, 8 просмотров)
BarsDG вне форума   Ответить с цитированием
Старый 16.10.2017, 15:43   #2
waleri
Профессионал
 
Регистрация: 13.07.2012
Адрес: Нижний Новгород
Сообщений: 5,296
Репутация: 1617
По умолчанию

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

skype: DontUseSkype
По умолчанию

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

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

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

skype: DontUseSkype
По умолчанию

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить handle стороннего окна системы Foxpronet Общие вопросы Delphi 4 21.05.2015 11: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


09:34.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru