Показать сообщение отдельно
Старый 02.04.2008, 15:34   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,654 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вроде бы, решение найдено. Раз надо создать буфер обмена, а прямые API-функции с этим не справляются, то и надо переложить эту работу "на плечи" того приложения, которое может это сделать. Например, MS Excel.

X++:
    ComExcelDocument_RU     excel;
    COM                     comRange
    ;

    excel = new ComExcelDocument_RU();
    excel.newFile("",true);

    comRange = excel.findRange("A1");
    comRange.value2("Инициализация буфера обмена");
    comRange.copy();
Т.е. копируем в буфер обмена содержимое не пустой (в смысле, заполненной) ячейки Excel, что, собственно, и приводит к инициализации буфера обмена.

Не скажу, что эта операция на 100% исключила возникновение ошибки копирования в буфер обмена, но теперь это не постоянная головная боль, а отдельные "случайные" эпизоды.

Да, если копирование происходит в методе класса ComExcelDocument_RU, то там все проще. Ведь Range определяется там же, в методе вставки. Вот непосредственно перед вставкой данных и надо в найденный Range вставить любое значение и выполнить метод range.copy().