29.03.2006, 16:11 | #1 |
Участник
|
Системный буфер обмена
Господа, кто может подкинуть идею: вставляю инфу в Excel из Axapta используя буфер обмена, но как сохранить системный буфер, а потом воостановить его?
Использовал TextBuffer sysBuffer = new TextBuffer(); но прокатывает соответственно только для строки... А в сис. буфере может быть что угодно (типа картинки и ....) Как быть? |
|
29.03.2006, 16:21 | #2 |
Участник
|
Можно воспользоваться API функциями. См. OpenClipboard, RegisterClipboardFormat, SetClipboardData в MSDN. Точнее сказать не могу - в Аксапте так делать не пробовал, но думаю проблем быть не должно.
|
|
29.03.2006, 17:00 | #3 |
NavAx
|
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
|
|
29.03.2006, 17:03 | #4 |
Участник
|
Цитата:
Сообщение от Roman777
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
|
|
29.03.2006, 17:05 | #5 |
Участник
|
Цитата:
Сообщение от Roman777
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
|
|
29.03.2006, 19:05 | #6 |
Участник
|
Цитата:
Сообщение от Roman777
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
|
|
30.03.2006, 11:15 | #7 |
Участник
|
Господа, кто подскажет как программно получить инфу содержащуюся в системном буфере? ПРОСТО ПО ЗАРЕЗ НУЖНО!!!
|
|
30.03.2006, 13:04 | #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. |
|
30.03.2006, 16:37 | #9 |
Участник
|
Цитата:
Сообщение от Косых Артём
данный джобик выдает в инфолог номер формата, в случае форматов 1 и 7 выдает содержащиеся строковые данные в буфере в этих форматах. Последний раз редактировалось LiSA; 30.03.2006 в 16:56. |
|
30.03.2006, 16:57 | #10 |
Участник
|
Цитата:
Сообщение от Косых Артём
в смысле файл с картинкой? или битмап?
|
|
30.03.2006, 17:40 | #11 |
Участник
|
Цитата:
Сообщение от Косых Артём
наверно, именно поэтому такой функции нет в стандартных.
Ну а чтобы разбираться, что находится в буфере, надо изучать библиотеку WinApi. А зачем Вам что угодно из буфера забирать, если не секрет? |
|
30.03.2006, 17:48 | #12 |
Участник
|
Ну почему придумали клас TextBuffer, а просто Buffer нет!!!! Хоть самому пиши!!!
|
|
30.03.2006, 17:48 | #13 |
Участник
|
постараюсь помочь, но уже скорей всего завтра.
|
|
30.03.2006, 17:54 | #14 |
Участник
|
Цитата:
Сообщение от Косых Артём
постараюсь помочь, но уже скорей всего завтра.
|
|
31.03.2006, 12:29 | #15 |
Участник
|
Вот про системный буфер в MSDN
Насколько я понял, в Вашем случае, было бы корректнее не сохранять весь буфер (там может быть черти что и с боку бантик от всяческих приложений), а записывать данные буфер в неком новом формате (выделять соответственно под это память и вся прочяя писанина). |
|
01.04.2006, 13:00 | #16 |
Участник
|
Вот, наваял на досуге: Сохранение/восстановление буфера обмена
|
|