Средства разработки приложений


Организация горячего канала Excel – приложение DDE. - часть 2


if(hData!=IntPtr.Zero)

{

    ...

}

// Освобождаем идентификатор строки

DDEML.DdeFreeStringHandle(_idInst, hszItem);

Отключение производим в обратном порядке, сначала информируем сервер о том, что данные из ячейки нам больше не нужны, посылая Excel транзакцию XTYP_ADVSTOP:

// Формируем название ячейки

string szItem = “R1C2”;

// Создаем идентификатор строки

IntPtr hszItem = DDEML.DdeCreateStringHandle(_idInst, szItem, DDEML.CP_WINANSI);

// Подписываемся на тему

uint pwdResult = 0;

IntPtr hData = DDEML.DdeClientTransaction((IntPtr)null, 0, hConv, hszItem, DDEML.CF_TEXT, DDEML.XTYP_ADVSTOP, 1000, ref pwdResult);

if(hData!=IntPtr.Zero)

{

    ...

}

// Освобождаем идентификатор строки

DDEML.DdeFreeStringHandle(_idInst, hszItem);

После завершения транзакции, закрываем канал:

//Закрываем канал

DDEML.DdeDisconnect(hConv);

И завершаем работу с библиотекой DDEML:

// Отключаемся от DDEML

DDEML.DdeUninitialize(idInst);

Необходимо отметить, что для всех трех режимов создается одинаковый канал. При этом для одних ячеек мы можем указывать «горячий» режим, для других – «теплый», а с третьими работать по явному запросу. Для того, чтобы включить «теплый» канал, необходимо отправить Excel транзакцию, код которой состоит из побитной комбинации кода транзакции XTYP_ADVSTART и флага XTYPF_NODATA.




Начало  Назад  Вперед



Книжный магазин