![]() |
#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
![]() |
|
![]() |
#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 |
Участник
|
Вот, наваял на досуге: Сохранение/восстановление буфера обмена
|
|