Используйте буфер обмена из VBScript - PullRequest
17 голосов
/ 24 сентября 2008

Я ищу способ поместить некоторый текст в буфер обмена с помощью VBScript . Рассматриваемый VBScript будет развернут как часть нашего сценария входа. Я хотел бы избегать использования всего, что недоступно в чистой системе Windows XP.

Edit: В ответ на вопросы о том, для чего это нужно.

Мы хотели бы призвать пользователей внутри нашей организации использовать файловый сервер для передачи документов вместо постоянной отправки вложений по электронной почте. Одним из главных препятствий для этого является то, что людям не всегда очевидно, какой правильный сетевой путь к файлу / папке. Мы разработали быстрый скрипт и прикрепили его к контекстному меню Windows, чтобы пользователь мог щелкнуть правой кнопкой мыши по любому файлу / папке и получить URL-адрес, который он может отправить кому-нибудь в нашей организации по электронной почте.

Я хочу, чтобы отображаемый в диалоговом окне URL-адрес также помещался в буфер обмена.

GetNetworkPath

Ответы [ 15 ]

2 голосов
/ 25 апреля 2013

Я разработал еще один способ использования IE и все же избегаю предупреждений безопасности ...

Кстати ... эта функция в JavaScript ... но вы легко можете конвертировать ее в VBScript ..

function CopyText(sTxt) {
    var oIe = WScript.CreateObject('InternetExplorer.Application');
    oIe.silent = true;
    oIe.Navigate('about:blank');
    while(oIe.ReadyState!=4) WScript.Sleep(20);
    while(oIe.document.readyState!='complete') WSript.Sleep(20);
    oIe.document.body.innerHTML = "<textarea id=txtArea wrap=off></textarea>";
    var oTb = oIe.document.getElementById('txtArea');
    oTb.value = sTxt;
    oTb.select();
    oTb = null;
    oIe.ExecWB(12,0);
    oIe.Quit();
    oIe = null;
}
1 голос
/ 10 сентября 2014

В вашем классе ClipBoard не работают ни подпрограмма Clear, ни подпрограмма Let Data. Я имею в виду, что они не влияют на Windows Clipboard. На самом деле, и по иронии судьбы, единственное, что работает, это тот, который вы не включили в свой пример, то есть Get Data! (Я тестировал этот код довольно много раз.)

Однако это не твоя вина. Я попытался скопировать данные в буфер обмена с ClipboardData.SetData, и это невозможно. По крайней мере, не путем создания объекта "htmlfile". Может быть, это работает путем создания экземпляра «InternetExplorer.Application», как я видел в нескольких случаях, но я не пробовал. Я ненавижу создавать экземпляры приложений для таких простых задач!

Alkis

1 голос
/ 03 декабря 2012

Взгляните на этот пост . Он описывает хакерский подход к чтению из буфера обмена, но я думаю, что он может быть адаптирован и для записи в буфер обмена, например, изменение Ctrl + V на Ctrl + A, а затем Ctrl + C.

0 голосов
/ 27 августа 2017

Нет предупреждений безопасности и нет возврата каретки в конце строки

' value to put in Clipboard
mavaleur = "YEAH"

' current Dir
path = WScript.ScriptFullName
GetPath = Left(path, InStrRev(path, "\"))

' Put the value in a file
Set objFSO=CreateObject("Scripting.FileSystemObject")
outFile=GetPath & "fichier.valeur"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write mavaleur
objFile.Close

' Put the file in the Clipboard
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c clip < " & outFile, 0, TRUE

' Erase the file
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile outFile
0 голосов
/ 06 октября 2008

Если это просто текст, вы не можете просто создать текстовый файл и прочитать его, когда вам это нужно?

Еще одна альтернатива и, очевидно, помеха - использование метода SendKeys().

...