Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Работа с буфером обмена (http://forums.kuban.ru/f1040/rabota_s_buferom_obmena-3185122.html)

Викторр 16.10.2012 14:16

Работа с буфером обмена
 
Нужно сделать кнопку, по которой нужно получить значение текущего элемента (неважно откуда - из ТЧ, из табдока или формы), и далее делать с этим значением всякие действия.
Решил пойти путем использования буфера обмена. Сделал кнопку на общей панели, назначил ей обработку:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
Отказ=Истина;
// передаем Ctrl-C
wsh=Новый COMОбъект("WScript.Shell");
wsh.SendKeys("^c");
// пытаемся получить содержимое буфера
h = Новый COMОбъект("htmlfile");
СодержимоеБуфера = h.ParentWindow .ClipboardData.Getdata("Text");
Сообщить(СодержимоеБуфера);
КонецПроцедуры

Проблема в том, что "^c" срабатывает только после окончания работы процедуры, и правильное содержимое буфера я получаю только при повторном вызове, что не есть хорошо. Есть ли у уважаемых форумчан мысли, как бы это обойти?

Климов Сергей 16.10.2012 14:21

В униврсальной обработке обмена в формате XML, в форме настройки отладки есть кнопка "скопировать в буфер обмена". Можно там поглядеть.

andrewks 16.10.2012 14:48

dynawrap.dll в помощь

Викторр 16.10.2012 15:46

Весь кайф ^c в том, что он тупо копирует в буфер текущий элемент. Если пользоваться методом, используемым в "обмене XML", то надо сначала каким-то хитрым образом получить значение этого текущего элемента. А поскольку текущим элементом может быть что угодно, я, честно говоря, в затруднении.

USSR 17.10.2012 03:36

может все-таки не копировать "что угодно"? наверное у данной задачи есть какой то здравый смысл?

Викторр 17.10.2012 13:45

ok, тогда как можно выяснить какое окно 1С активно, и какой элемент в этом окне активен?

Викторр 19.10.2012 09:21

всё, не актуально, сам всё сделал через фоновые задания


Текущее время: 16:46. Часовой пояс GMT +3.