AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.03.2006, 16:11   #1  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Системный буфер обмена
Господа, кто может подкинуть идею: вставляю инфу в Excel из Axapta используя буфер обмена, но как сохранить системный буфер, а потом воостановить его?
Использовал TextBuffer sysBuffer = new TextBuffer(); но прокатывает соответственно только для строки... А в сис. буфере может быть что угодно (типа картинки и ....) Как быть?
Старый 29.03.2006, 16:21   #2  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Можно воспользоваться API функциями. См. OpenClipboard, RegisterClipboardFormat, SetClipboardData в MSDN. Точнее сказать не могу - в Аксапте так делать не пробовал, но думаю проблем быть не должно.
Старый 29.03.2006, 17:00   #3  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
Старый 29.03.2006, 17:03   #4  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от Roman777
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
У меня нет такого класса....
Старый 29.03.2006, 17:05   #5  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от Roman777
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
Пардон, у меня с глазами уже плохо! Пора на перекур!!! Спасибо Roman 777!
Старый 29.03.2006, 19:05   #6  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от Roman777
Вот тут примерчик: \Classes\smmSaveDocumentsToClipboard
Пример хороший, но не помог... openClipboard, closeClipboard, emptyClipboard и так понятно как работают, но нужен getClipboardData, не могу понять какие у него параметры нужно указывать и в каком виде возвращается инфа?
Старый 30.03.2006, 11:15   #7  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Господа, кто подскажет как программно получить инфу содержащуюся в системном буфере? ПРОСТО ПО ЗАРЕЗ НУЖНО!!!
Старый 30.03.2006, 13:04   #8  
Косых Артём is offline
Косых Артём
Участник
Axapta Retail User
 
123 / 77 (3) ++++
Регистрация: 03.09.2004
Адрес: Москва
Код:
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  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от Косых Артём

данный джобик выдает в инфолог номер формата,
в случае форматов 1 и 7 выдает содержащиеся строковые данные в буфере в этих форматах.
Артём, не скромный вопрос - а если в буфере находится картинка? Смысл в общем такой: мне нужно сначало сохранить инфу из буфера (какого бы типа она не была), а потом обратно восстановить её в буфер обмена с точностью до последнего битика... Мне просто приходится использовать буфер под свои данные, но системный буфер терять ни как нельзя..

Последний раз редактировалось LiSA; 30.03.2006 в 16:56.
Старый 30.03.2006, 16:57   #10  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от Косых Артём
в смысле файл с картинкой? или битмап?
В буфере, в принципе, может находится вообще что угодно...
Старый 30.03.2006, 17:40   #11  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от Косых Артём
наверно, именно поэтому такой функции нет в стандартных.
Ну а чтобы разбираться, что находится в буфере, надо изучать библиотеку WinApi.
А зачем Вам что угодно из буфера забирать, если не секрет?
Артём, смысл такой - я экспортирую данные их Axapta в Excel, при этом использую буфер обмена, т.к. втавляю в эхсел не по строчно, а сразу столбцами (ускоряю процесс вывода в эксел ) , но по хорошему хочу сохранить сис буфер (правило хорошего тона) - ВОТ В ЭТОМ ВЕСЬ И ГИМОР!!! Извиняюсь за нехорошие слова!
Старый 30.03.2006, 17:48   #12  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Ну почему придумали клас TextBuffer, а просто Buffer нет!!!! Хоть самому пиши!!!
Старый 30.03.2006, 17:48   #13  
Косых Артём is offline
Косых Артём
Участник
Axapta Retail User
 
123 / 77 (3) ++++
Регистрация: 03.09.2004
Адрес: Москва
постараюсь помочь, но уже скорей всего завтра.
Старый 30.03.2006, 17:54   #14  
LiSA is offline
LiSA
Участник
 
19 / 10 (1) +
Регистрация: 28.03.2006
Цитата:
Сообщение от Косых Артём
постараюсь помочь, но уже скорей всего завтра.
Артём, без разницы, получится или нет, БОЛЬШОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО!
Старый 31.03.2006, 12:29   #15  
Косых Артём is offline
Косых Артём
Участник
Axapta Retail User
 
123 / 77 (3) ++++
Регистрация: 03.09.2004
Адрес: Москва
Вот про системный буфер в MSDN

Насколько я понял, в Вашем случае, было бы корректнее не сохранять весь буфер (там может быть черти что и с боку бантик от всяческих приложений), а записывать данные буфер в неком новом формате (выделять соответственно под это память и вся прочяя писанина).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
фильтр на копировании в буфер обмена Nikolaich DAX: Программирование 15 26.02.2009 21:10
Тормозит копирование строк в буфер обмена ivas DAX: Программирование 20 21.08.2007 15:05
Не копирует из display-метода в буфер обмена akvi DAX: Программирование 6 08.12.2005 13:14
Буфер обмена novic DAX: Программирование 1 06.06.2005 08:11
Вот - про быстр. Ексель, буфер обмена, и т.д. POS DAX: Программирование 22 01.03.2004 18:42
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:11.