Как обратиться в внешнему Grid`у через API?
От: tea-02  
Дата: 30.01.11 09:43
Оценка:
Привет всем!
В общих словах: есть внешнее приложение. В нем есть Grid.
Из среды разработки (VB 6.0) узнал его Handle, класс. Похоже он самописный!
Теперь мне необходимо получить данные из него.

Вопрос: Как это можно сделать используя API?

Всем спасибо заранее!
Re: Как обратиться в внешнему Grid`у через API?
От: alexey_ma Израиль  
Дата: 30.01.11 16:28
Оценка: 6 (1)
Здравствуйте, tea-02, Вы писали:

T0>Привет всем!

T0>В общих словах: есть внешнее приложение. В нем есть Grid.
T0>Из среды разработки (VB 6.0) узнал его Handle, класс. Похоже он самописный!
T0>Теперь мне необходимо получить данные из него.

T0>Вопрос: Как это можно сделать используя API?


T0>Всем спасибо заранее!


Какой точно класс окна грида? Если это MSFlexGridWndClass из VB 6.0 или что-то подобное то все достаточно просто. Это ActiveX, yказатель на IMSFlexGrid получается примерно таким кодом

IMSFlexGridPtr get_grid_ptr(HWND hgrid)
{
TCHAR szClass[MAX_PATH] = {0};
::GetClassName(hgrid,szClass,MAX_PATH);
if (_tcscmp (szClass,L"MSFlexGridWndClass") != 0)
return NULL;
try
{
DWORD ptr = ::GetWindowLongA(hgrid,GWL_USERDATA);
ptr += 4;
ptr = (DWORD)(*(DWORD*)ptr);
IUnknownPtr unk = reinterpret_cast<IUnknown*>(ptr);
MSFlexGridLib::IMSFlexGridPtr flexgrid = unk;
return flexgrid;
}
catch(...)
{
return NULL;
}
}

А дальше рулите этим гридом как хотите. И самое главное : поскольку приложение внешнее то придеться внедрять в него свою длл и уже оттуда работать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.