|
|
#1 |
|
Участник
|
Системный буфер обмена
Господа, кто может подкинуть идею: вставляю инфу в Excel из Axapta используя буфер обмена, но как сохранить системный буфер, а потом воостановить его?
Использовал TextBuffer sysBuffer = new TextBuffer(); но прокатывает соответственно только для строки... А в сис. буфере может быть что угодно (типа картинки и ....) Как быть? |
|
|
|
|
#2 |
|
Участник
|
Можно воспользоваться API функциями. См. OpenClipboard, RegisterClipboardFormat, SetClipboardData в MSDN. Точнее сказать не могу - в Аксапте так делать не пробовал, но думаю проблем быть не должно.
|
|
|
|
|
#3 |
|
NavAx
|
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
|
|
|
|
|
#4 |
|
Участник
|
Цитата:
Сообщение от Roman777
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
У меня нет такого класса....
|
|
|
|
|
#5 |
|
Участник
|
Цитата:
Сообщение от Roman777
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
Пардон, у меня с глазами уже плохо! Пора на перекур!!! Спасибо Roman 777!
|
|
|
|
|
#6 |
|
Участник
|
Цитата:
Сообщение от Roman777
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
|
|
|
|
|
#7 |
|
Участник
|
Господа, кто подскажет как программно получить инфу содержащуюся в системном буфере? ПРОСТО ПО ЗАРЕЗ НУЖНО!!!
|
|
|
|
|
#8 |
|
Участник
|
Код: static void Job13(Args _args)
{
DLL _winApiDLL = new DLL('USER32');
DLLFunction _getClipboardData = new DLLFunction(_winApiDLL, 'GetClipboardData');
DLLFunction _enumClipboardFormats = new DLLFunction(_winApiDLL, 'EnumClipboardFormats');
int format;
;
if(WinApi::openClipboard(0))
{
_enumClipboardFormats.arg(ExtTypes::DWord);
_enumClipboardFormats.returns(ExtTypes::DWord);
format = _enumClipboardFormats.call(0);
_getClipboardData.arg(ExtTypes::DWord);
while(format)
{
info(int2str(format));
switch(format)
{
case 1: //CF_TEXT
case 7: //CF_OEMTEXT
_getClipboardData.returns(ExtTypes::String);
info(_getClipboardData.call(format));
break;
default:
break;
}
format = _enumClipboardFormats.call(format);
}
WinApi::closeClipboard();
}
}в случае форматов 1 и 7 выдает содержащиеся строковые данные в буфере в этих форматах. Последний раз редактировалось Косых Артём; 30.03.2006 в 13:09. |
|
|
|
|
#9 |
|
Участник
|
Цитата:
Сообщение от Косых Артём
данный джобик выдает в инфолог номер формата, в случае форматов 1 и 7 выдает содержащиеся строковые данные в буфере в этих форматах.
Последний раз редактировалось LiSA; 30.03.2006 в 16:56. |
|
|
|
|
#10 |
|
Участник
|
Цитата:
Сообщение от Косых Артём
в смысле файл с картинкой? или битмап?
|
|
|
|
|
#11 |
|
Участник
|
Цитата:
Сообщение от Косых Артём
наверно, именно поэтому такой функции нет в стандартных.
Ну а чтобы разбираться, что находится в буфере, надо изучать библиотеку WinApi. А зачем Вам что угодно из буфера забирать, если не секрет? ) , но по хорошему хочу сохранить сис буфер (правило хорошего тона) - ВОТ В ЭТОМ ВЕСЬ И ГИМОР!!! Извиняюсь за нехорошие слова!
|
|
|
|
|
#12 |
|
Участник
|
Ну почему придумали клас TextBuffer, а просто Buffer нет!!!!
Хоть самому пиши!!!
|
|
|
|
|
#13 |
|
Участник
|
постараюсь помочь, но уже скорей всего завтра.
|
|
|
|
|
#14 |
|
Участник
|
Цитата:
Сообщение от Косых Артём
постараюсь помочь, но уже скорей всего завтра.
|
|
|
|
|
#15 |
|
Участник
|
Вот про системный буфер в MSDN
Насколько я понял, в Вашем случае, было бы корректнее не сохранять весь буфер (там может быть черти что и с боку бантик от всяческих приложений), а записывать данные буфер в неком новом формате (выделять соответственно под это память и вся прочяя писанина). |
|
|
|
|
#16 |
|
Участник
|
Вот, наваял на досуге: Сохранение/восстановление буфера обмена
|
|
|