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

- Anderyt
- Активный участник
- Сообщения: 777
- Зарегистрирован: 15 июл 2004, 13:15
- Используемое ПО: Lotsia PDM PLUS
- Откуда: Тюмень
- Контактная информация:
Re: Как работать с буфером обмена в действиях через скрипт?
одна деталь - операции вставки В буфер и вставки ИЗ буфера нужно провести на разных машинах.
в общем..
хочу сделать действие Копировать ссылку, которое можно запустить из контекстного меню на любом объекте, действие должно скопировать ИД объекта и записать его в буфер.
потом юзер сможет вставить этот ИД в любое средство коммуникации (в аську), отправить его другому юзеру в рамках локальной сети.
тот юзер, получив ИД, скопирует его в буфер и нажмет кнопку в Лоции, которая сама возьмет ИД из буфера и откроет объект.
то есть практически полная аналогия с копированием и пересылкой ссылки на интернет-страницы.
это ж намного удобнее, чем рассказывать другому человеку "вот на такой странице нажми такую то ссылку, потом вон ту, а потом - вот эту", а тот человек потом будет все это протыкивать у себя на машине..
а у нас сейчас общение про объекты в Лоции выглядит именно так - все на словах приходится объяснять и проходить вручную по всей ветке дерева...
в общем..
хочу сделать действие Копировать ссылку, которое можно запустить из контекстного меню на любом объекте, действие должно скопировать ИД объекта и записать его в буфер.
потом юзер сможет вставить этот ИД в любое средство коммуникации (в аську), отправить его другому юзеру в рамках локальной сети.
тот юзер, получив ИД, скопирует его в буфер и нажмет кнопку в Лоции, которая сама возьмет ИД из буфера и откроет объект.
то есть практически полная аналогия с копированием и пересылкой ссылки на интернет-страницы.
это ж намного удобнее, чем рассказывать другому человеку "вот на такой странице нажми такую то ссылку, потом вон ту, а потом - вот эту", а тот человек потом будет все это протыкивать у себя на машине..
а у нас сейчас общение про объекты в Лоции выглядит именно так - все на словах приходится объяснять и проходить вручную по всей ветке дерева...
лучше день потерять, потом за пять минут долететь!
-
- Активный участник
- Сообщения: 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: Как работать с буфером обмена в действиях через скрипт?
спасибо за идею 
понятно, что можно в сообщении.
но хочется сделать через внешние средства коммуникации, которые являются IM, а не e-mail. разница между ними как раз в "мгновенности"
у нас тут вроде уже кое что получается
блоки копирования и вставки должны быть в разных скриптах и действиях, здесь они показаны вместе просто для примера.
мы сейчас продолжаем работать над этим скриптом, опыта мало, меня лично смущает наличие объекта objIE и работа с буфером через его методы, может, у кого-то есть более изящное решение?

понятно, что можно в сообщении.
но хочется сделать через внешние средства коммуникации, которые являются 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: Как работать с буфером обмена в действиях через скрипт?
итак, у нас получилось 
сделал все мой коллега, который понимает в скриптах.
итак.
действие:
перед номерами шагов - метки шагов (если есть)
теперь скрипт:
на шаге 3 вызывается процедура Copy, на шаге 4 - Paste
для этих действий настроили пункты контекстного меню - два пункта, один "Копировать ссылку на объект" с передачей в Var_action значения 'copy', второй - "Открыть объект по ссылке" со значением 'paste'
и все!
сейчас юзер можно ткнуть на нужном ему объекте правой кнопкой, выбрать Копировать.., потом в сообщение по аське для другого юзера (в том числе для нас) вставить ИД объекта и отправить.
юзер, получивший по аське этот набор букв, копирует его из аськи, потом нажимает в дереве лоции на любом объекте правой кнопкой, выбирает Открыть объект по ссылке и объект открывается!
и никаких ручных копирований ИД в буфер/из буфера не нужно!
таким образом мы стараемся снизить необходимость в пересказывании на словах, где находится объект и как до него добраться. То есть фактически передаем прямые ссылки на объекты (редко кто объясняет другому по аське, мол, зайди на такую то страницу, там внизу такая то ссылка, потом сверху еще такая и так далее
)

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

лучше день потерять, потом за пять минут долететь!