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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Приветствую!

Требуется чтобы запустилась программа на VB и сбросила в буфер обмена текст, например текущую дату.
Может есть что-то готовое в Windows?
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

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

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

sData = Clipboard.GetText()
Clipboard.Clear
Clipboard.SetText sData
Евгений.
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Teslenko_EA, спасибо
буду разбираться

Общая задача - нажать что-нибудь на рабочем столе и в буфер попадает текст - "2008.07.28"
При назывании папки в проводнике вставляем этот текст.
Привык назвать папки в Windows, начиная с такой строки :)
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

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)
Андрей Энтелис,
aentelis.livejournal.com
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

просто добавить в контекстное меню проводника ссылку на скрипт на VBS
наверно - это как раз то, что мне нужно, а как это сделать?
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Вышеприведённый скрипт положить в папку 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....
Андрей Энтелис,
aentelis.livejournal.com
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Андрей Энтелис,
aentelis.livejournal.com
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

К сожалению, должен заменить, что под WSH 5.7 под VISTA свойство .CurrentDirectory объекта
WScript.Shell работает некорректно. Так что это код для XP (WSH 5.6)
Андрей Энтелис,
aentelis.livejournal.com
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Aent, огромное спасибо
за готовое решение и вводный курс в VBS.

Папок на рабочем столе достаточно, от них "толкаюсь" и запускаю ваш скрипт.
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

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

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

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