Страница 1 из 1

VB. Чем положить текст в буфер обмена?

Добавлено: 26 июл 2008, 13:35
Avsha
Приветствую!

Требуется чтобы запустилась программа на VB и сбросила в буфер обмена текст, например текущую дату.
Может есть что-то готовое в Windows?

Re: VB. Чем положить текст в буфер обмена?

Добавлено: 26 июл 2008, 15:42
Teslenko_EA
Здравствуйте Avsha.
существуют "готовые" инструкции для работы с буфером обмена:

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

sData = Clipboard.GetText()
Clipboard.Clear
Clipboard.SetText sData
Евгений.

Re: VB. Чем положить текст в буфер обмена?

Добавлено: 27 июл 2008, 07:10
Avsha
Teslenko_EA, спасибо
буду разбираться

Общая задача - нажать что-нибудь на рабочем столе и в буфер попадает текст - "2008.07.28"
При назывании папки в проводнике вставляем этот текст.
Привык назвать папки в Windows, начиная с такой строки :)

Re: VB. Чем положить текст в буфер обмена?

Добавлено: 27 июл 2008, 14:49
Aent
Avsha, а просто добавить в контекстное меню проводника ссылку на скрипт на VBS ?

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

Dim oWsh,oShell,oFolder
On error resume next
Set oWsh = CreateObject("WScript.Shell")
set oShell = CreateObject("Shell.Application")
set oFolder = oShell.NameSpace(oWsh.CurrentDirectory) 
oFolder.NewFolder Mid(Date,7,4) & "-" & Mid(Date,4,2) & "-" & mid(Date,1,2)

Re: VB. Чем положить текст в буфер обмена?

Добавлено: 27 июл 2008, 20:14
Avsha
просто добавить в контекстное меню проводника ссылку на скрипт на VBS
наверно - это как раз то, что мне нужно, а как это сделать?

Re: VB. Чем положить текст в буфер обмена?

Добавлено: 27 июл 2008, 21:44
Aent
Вышеприведённый скрипт положить в папку Windows под именем fad.vbs
Набить reg файл fad.reg

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

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Folder\shell\Folder_as_Date]
@="Folder as Date"
[HKEY_CLASSES_ROOT\Folder\shell\Folder_as_Date\command]
@="wscript.exe C:\\WINDOWS\\fad.vbs %L"
Выполнить его.
Теперь если в целевой папке вы кликните правой клавишей мыши на какой то папке, то в
появившемся контекстном меню будет пункт Folder as Date.
Его выбор приведёт к исполнению скрипта.
К сожалению, c ходу я не могу придумать как простыми средствами выполнить скрипт из
меню выпадающему по правому клику в пустом пространстве проводника (там где пункт создать)
Можно так же изменить скрипт чтобы папка с датой создавалась при клике на родительской папке.
Или не создавать папку а переименовывать существующую папку с именем "Новая Папка" или иным в имя, полученное из текущей даты.
Кстати, для приведённого выше reg файла имя папки передаётся в скрипт первым параметром. И может быть получено через
WScript.Arguments....

Re: VB. Чем положить текст в буфер обмена?

Добавлено: 27 июл 2008, 21:45
Aent

Re: VB. Чем положить текст в буфер обмена?

Добавлено: 27 июл 2008, 21:47
Aent
К сожалению, должен заменить, что под WSH 5.7 под VISTA свойство .CurrentDirectory объекта
WScript.Shell работает некорректно. Так что это код для XP (WSH 5.6)

Re: VB. Чем положить текст в буфер обмена?

Добавлено: 28 июл 2008, 10:24
Avsha
Aent, огромное спасибо
за готовое решение и вводный курс в VBS.

Папок на рабочем столе достаточно, от них "толкаюсь" и запускаю ваш скрипт.

Re: VB. Чем положить текст в буфер обмена?

Добавлено: 28 июл 2008, 11:57
Aent
Avsha, Не за что :)
Если вам нужно создавать папки именно на рабочем столе, то можно просто поместить ярлык на cлегка модифицированный скрипт на рабочий стол.
Ссылка на рабочий стол получается так

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

....
set oFolder = oShell.NameSpace(oWsh.SpecialFolders("Desktop"))
......
Хотя, IMHO, cохранять любые данные на рабочем столе - плохая практика.
Windows начинает очень сильно тормозить ....