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