剪贴板的CF_HTML
Clipboard
Format的确容易让人搞胡涂,一部分是因为它不是clipboard
format中自带的剪贴板;它是一个注册格式(registered
format),所以不是一个常量,因为它的值会因为系统的不同而产生变化。你可以通过一个简单的API调用
--
RegisterClipboardFormat来获得一个注册剪贴板格式的值。这个函数的首次调用会通过一个给定的字符串来执行,它返回一个范围在C000-FFFF之间的唯一值。每一个在系统上处理的后续调用(subsequent
call)会返回同样的值。用于这种格式中的关键字符串就是“HTML
Format”:
你必须首先构建一个描述性的header,并在将HTML数据放入剪贴板之前先把它放到数据中。这个header会给其他程序提供描述版本信息、HTML起始数据的偏移量(offset),以及有关实际选择范围(actual
selection)起始地方的信息。用户可能会选择的HTML文档的一部分甚至只是一个元素(比如一个table中的几行)作为一个选择区域。页面的其他部分,比如内联样式定义(inline
style
definitions)则可能会被要求进行完全渲染(render)。你不仅需要将最初所选择的HTML区域放入剪贴板,而且还需要放入一个header,它看起来就像是这样:
Version:1.0
StartHTML:000000258
EndHTML:000001491
StartFragment:000001172
EndFragment:000001411
应应用程序通过StartFragment和EndFragment属性来决定哪些数据需要粘贴,这些数据或许会(也可能不会)用剩下的HTML对所选择的部分进行格式安排。你必须将HTML注释放入数据中以便将来对所选部分进行识别。很明显,你必须在构建最后的header之前完成它,否则偏移量会有变化。一个用于所选数据的opening/closing注释标签分别是“
StartFragment
”和“
EndFragment
”
最简洁的代码,可能无法实现,毕竟获取剪切板中的数据,就需要一长串代码了,再加上替换字符,执行ffmpeg,那么就有蛮多代码了。以下就是代码(保存编码设为ANSI)
:On Error Resume Next:Sub bat
echo off & cls
echo '>nul & title 获取剪切板,并处理内容后执行ffmpeg命令 By 依梦琴瑶
echo '>nul & for /f "delims=" %%a in ('cscript /nologo /e:vbscript "%~f0"') do set "Url=%%~a"
echo '>nul & ffmpeg -i "%Url:<playpath>=/%" -c copy "E:\123.ts"
pause
Exit Sub : End Sub
Set Fso = Createobject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
Set objHTML = CreateObject("htmlfile")
ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")
Wscript.Echo ClipboardText
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)