Как работать с буфером обмена в действиях через скрипт?

Обсуждение технических вопросов работы с системами управления базами данных (СУБД), работе с языком SQL и скриптовыми языками.
Ответить
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Как работать с буфером обмена в действиях через скрипт?

Сообщение Anderyt »

коллеги, подскажите плиз, как можно в скрипте в действии над объектами записать строку в буфер обмена и прочитать строку из буфера обмена? хочется в одном действии передать строковую переменную в буфер обмена, а в другом - взять эту строку и записать ее в переменную действия для дальнейшей обработки..
заранее спасибо!
лучше день потерять, потом за пять минут долететь!
Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Re: Как работать с буфером обмена в действиях через скрипт?

Сообщение Юрий »

А зачем заморачиваться с буфером?
Скриптом можно работать с текстовыми файлами.
Записываешь строку в файл, а затем другим действием считываешь.
практически тот-же буфер. :)
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: Как работать с буфером обмена в действиях через скрипт?

Сообщение Anderyt »

одна деталь - операции вставки В буфер и вставки ИЗ буфера нужно провести на разных машинах.
в общем..
хочу сделать действие Копировать ссылку, которое можно запустить из контекстного меню на любом объекте, действие должно скопировать ИД объекта и записать его в буфер.
потом юзер сможет вставить этот ИД в любое средство коммуникации (в аську), отправить его другому юзеру в рамках локальной сети.
тот юзер, получив ИД, скопирует его в буфер и нажмет кнопку в Лоции, которая сама возьмет ИД из буфера и откроет объект.
то есть практически полная аналогия с копированием и пересылкой ссылки на интернет-страницы.
это ж намного удобнее, чем рассказывать другому человеку "вот на такой странице нажми такую то ссылку, потом вон ту, а потом - вот эту", а тот человек потом будет все это протыкивать у себя на машине..
а у нас сейчас общение про объекты в Лоции выглядит именно так - все на словах приходится объяснять и проходить вручную по всей ветке дерева...
лучше день потерять, потом за пять минут долететь!
Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Re: Как работать с буфером обмена в действиях через скрипт?

Сообщение Юрий »

А как насчет внутренней почты лоции?
В сообщении можно переслать объект.
Юрий
Активный участник
Сообщения: 239
Зарегистрирован: 13 янв 2005, 14:30
Используемое ПО: Lotsia PDM PLUS LT
Откуда: Украина, Донецк
Контактная информация:

Re: Как работать с буфером обмена в действиях через скрипт?

Сообщение Юрий »

Вообще самый удобный вариант - использовать PartyAPI выкладываешь прогу на общую шару.
Тот кто отправляет выкладывает ссылку на запуск этой программы в командной строке которой ссылка на
открываемый объект. Получивший нажимает на эту ссылку и у него программа запускается
и открывает нужный объект.
Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Re: Как работать с буфером обмена в действиях через скрипт?

Сообщение Старик Крупский »

Юрий писал(а):А как насчет внутренней почты лоции?
В сообщении можно переслать объект.
Вот именно!
"Лучше меньше, да лучше" (C)
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: Как работать с буфером обмена в действиях через скрипт?

Сообщение Anderyt »

спасибо за идею :-)
понятно, что можно в сообщении.
но хочется сделать через внешние средства коммуникации, которые являются IM, а не e-mail. разница между ними как раз в "мгновенности" ;-)
у нас тут вроде уже кое что получается

Код: Выделить всё

Option Explicit
sub Clip

dim idobj
dim objIE 
dim ClipboardText 

idobj=LsVars.GetVarValue("var_id")

Set objIE = CreateObject("htmlfile")  

'-----копировать в буфер----------------
'objIE.parentwindow.clipboardData.SetData "text", idobj  

'-----вставить из буфера--------------
LsVars.SetVarValue("var_id2")= objIE.ParentWindow.ClipboardData.getData("text")

end sub
блоки копирования и вставки должны быть в разных скриптах и действиях, здесь они показаны вместе просто для примера.
мы сейчас продолжаем работать над этим скриптом, опыта мало, меня лично смущает наличие объекта objIE и работа с буфером через его методы, может, у кого-то есть более изящное решение?
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Re: Как работать с буфером обмена в действиях через скрипт?

Сообщение Anderyt »

итак, у нас получилось :-)
сделал все мой коллега, который понимает в скриптах.
итак.
действие:

Код: Выделить всё

1 Выбор шага
GoTo ( var_action )
copy - 2 Добавить ИД в буфер
var_id_copy = Set ( string(a_object) )
3 Копировать ИД в буфер (Скрипт)
GoTo ( 'end' )
paste - 4 Получить ИД из буфера (Скрипт)
5 Проверка
GoTo ( if((len(trim(var_id_paste))=15) and (IsNumber(trim(var_id_paste)) ) ,'open','info') )
open - 6 Открыть объект
obj_open = SetByID ( number(var_id_paste) )
WndTree ( obj_open , a_LinkType )
GoTo ( 'end' )
info - 7 Внимание
GoTo ( 'end' )
end - 8 end
перед номерами шагов - метки шагов (если есть)
теперь скрипт:

Код: Выделить всё

Option Explicit
sub Copy

dim idobj
dim objIE 

idobj=LsVars.GetVarValue("var_id_copy")

Set objIE = CreateObject("htmlfile")  

'-----копировать в буфер----------------
objIE.parentwindow.clipboardData.SetData "text", idobj  
end sub

sub Paste

dim idobj
dim objIE 

Set objIE = CreateObject("htmlfile")  

'-----вставлять из буфера--------------
LsVars.SetVarValue("var_id_paste")= objIE.ParentWindow.ClipboardData.getData("text")

end sub
на шаге 3 вызывается процедура Copy, на шаге 4 - Paste

для этих действий настроили пункты контекстного меню - два пункта, один "Копировать ссылку на объект" с передачей в Var_action значения 'copy', второй - "Открыть объект по ссылке" со значением 'paste'
и все!
сейчас юзер можно ткнуть на нужном ему объекте правой кнопкой, выбрать Копировать.., потом в сообщение по аське для другого юзера (в том числе для нас) вставить ИД объекта и отправить.
юзер, получивший по аське этот набор букв, копирует его из аськи, потом нажимает в дереве лоции на любом объекте правой кнопкой, выбирает Открыть объект по ссылке и объект открывается!
и никаких ручных копирований ИД в буфер/из буфера не нужно! 
таким образом мы стараемся снизить необходимость в пересказывании на словах, где находится объект и как до него добраться. То есть фактически передаем прямые ссылки на объекты (редко кто объясняет другому по аське, мол, зайди на такую то страницу, там внизу такая то ссылка, потом сверху еще такая и так далее ;-) )
лучше день потерять, потом за пять минут долететь!
Ответить