vbs español ejecutar codigos vbscript clipboard
Internet

vbscript - español - ejecutar vbs



¿Cómo puedo usar el Portapapeles en vbscript? (2)

VBScript no es compatible con el portapapeles. La mayoría de los hosts que alojan vbscript, como Internet Explorer, dan acceso a través del host. Por lo tanto, vbscript que se ejecuta en IE o HTA puede usar el soporte del portapapeles de IE. Los hosts de scripting no dan soporte al portapapeles. Puede usar un archivo vbs para iniciar IE a través de la automatización COM, navegar a una página local (para eludir las advertencias de seguridad) y luego usar el portapapeles de IE.

Aquí hay un snippit de código (Outp. Es una secuencia de texto)

Set ie = CreateObject("InternetExplorer.Application") ie.Visible = 0 ie.Navigate2 "C:/Users/David Candy/Desktop/Filter.html" Do wscript.sleep 100 Loop until ie.document.readystate = "complete" txt=ie.document.parentwindow.clipboardData.GetData("TEXT") ie.quit If IsNull(txt) = true then outp.writeline "No text on clipboard" else outp.writeline txt End If

Nota del editor :
Si bien esta pregunta se trata específicamente de copiar una referencia de archivo al portapapeles, su título genérico generó respuestas sobre cómo copiar / obtener texto .

Como usuario de Emacs en Windows que a menudo adjunta archivos en correos electrónicos, he estado buscando una utilidad para copiar un archivo ( no su contenido ) en el portapapeles, tal como lo hace Windows Explorer en el botón derecho / copiar.

Acabo de encontrar esto aquí en SO, que usa System.Windows.Forms.Clipboard` en un pequeño programa para hacer exactamente eso. Pero está en C #, por lo que no tengo acceso inmediato a un compilador. Entonces me pregunto si esto se puede hacer y cómo.

Vi varias referencias como esta que el portapapeles no es accesible en VBScripting, pero msdn muestra documentación para VB, así que estoy arriesgando la pregunta.

Nunca antes había escrito un VBScript pero intenté algunas cosas antes de preguntar, comenzando con la ejecución de una copia pegada en un "Hola mundo" y luego varias combinaciones de CreateObject etc.

Actualización: necesito llamar a Clipboard.SetFileDropList , así que no creo que pueda usar ClipboardData como lo sugieren las respuestas, no tiene este método.

Actualización para visitantes

La solución que terminé usando fue compilar el C# sí, no sabía que ya tenía un compilador.

Otra actualización para los visitantes https://stackoverflow.com/a/29963268/18573 es lo que estoy usando, bastante feliz.


Puede hacerlo con un objeto html para recuperar el contenido del portapapeles:

'' Get clipboard text Set objHTML = CreateObject("htmlfile") text = objHTML.ParentWindow.ClipboardData.GetData("text")

EDITAR: uso este fragmento para poner el texto nuevamente en el portapapeles, pero necesita un software de terceros; un ejecutable independiente ''clip.exe'' que se puede encontrar en Windows 2003 Server o simplemente en Internet :

'' Do something with the text text = replace(text, "you ", "you and your dog ") '' Put it back to the clipboard Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("clip") Set oIn = oExec.stdIn oIn.WriteLine text oIn.Close

(Sí, todo es un poco hackerdyhack)