Board logo

标题: vbs读取剪贴板和字符串提取的请教 [打印本页]

作者: knight1006     时间: 2009-4-15 00:41    标题: vbs读取剪贴板和字符串提取的请教
请问,在剪贴板里有如下信息,我想“把目标位置:”后面的内容提取出来,播放。用VBS。
看到过有人写的调用WMPlayer.ocx来播放,代码如下:
set wmp = CreateObject("WMPlayer.ocx")
wmp.url = "C:\Documents and Settings\Administrator\桌面\琵琶语.wma"
'wmp.play
do until wmp.playState = 1
wsh.sleep 100
loop
现在想把剪贴板内音乐的路径传给上面的代码实现播放,请大家帮帮我。



剪贴板内容如下:

来源位置: http://www.mzfstv.com/newgn1/mp3/%E7%BB%83%E4%B9%A0.mp3
目的位置: C:\Users\Knight\Desktop\练习.mp3
大小: 4.0 MB (4,182,016 字节)
已下载: 4.0 MB (4,182,016 字节)

Last edited by knight1006 on 2009-4-15 at 05:59 ]

作者: s11ss     时间: 2009-4-15 13:09

s = CreateObject("htmlfile").parentWindow.clipboardData.getData("Text")

Set re = New RegExp
re.Pattern = "目的位置: (.+)"

play re.Execute(s)(0).SubMatches(0)

Sub play(file)
set wmp = CreateObject("WMPlayer.ocx")
wmp.url = file
'wmp.play
do until wmp.playState = 1
wsh.sleep 100
loop
End Sub

作者: knight1006     时间: 2009-4-15 14:27
非常感谢!!!

作者: newxso     时间: 2009-4-15 22:45
对 Pattern 属性不认识,因此我使用了较落后的方法:

Set objHTML = CreateObject("htmlfile")
ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")
strText=Split(ClipboardText,vbCrLf)
For Each strLine In strText
If Instr(strLine,"目的位置")>0 Then Exit For
Next
strPath=replace(strLine,"目的位置: ","")

Set Wmp = CreateObject("WMPlayer.ocx")
Wmp.Url = strPath
Wsh.Sleep 500
do Until Wmp.PlayState = 1
Wsh.Sleep 500
loop


批处理方式:

@echo off
mshta vbscript:createobject("scripting.filesystemobject").opentextfile("clip.txt",2,true).writeline(clipboardData.GetData("text"))(window.close)

for /f "delims=" %%a in ('type clip.txt^|find "目的位置"') do set strline=%%~a
set strpath=%strline:目的位置: =%
del clip.txt
start "" "%strpath%"

把最下一句改成如下就可以后台播放:

start mshta vbscript:createobject("wscript.shell").run("""c:\program files\windows media player\wmplayer.exe"" ""%strpath%""",0)(window.close)

或生成临时文件(播放完会自我删除):

(
echo Set Wmp=CreateObject^("WMPlayer.ocx"^)
echo Wmp.Url="%strpath%"
echo Wsh.Sleep 500
echo do Until Wmp.PlayState=1
echo Wsh.Sleep 500
echo loop
echo CreateObject^("Scripting.FileSystemObject"^).GetFile^(WScript.ScriptFullName^).Delete
)>%temp%\wmp.vbs
start wscript.exe "%temp%\wmp.vbs"


Last edited by newxso on 2009-4-17 at 18:01 ]

作者: knight1006     时间: 2009-4-17 10:57
感谢楼上热心的解答

作者: knight1006     时间: 2009-4-17 11:09
不过上面的批处理达不到预期效果,我是想要后台播放,不显示界面

Last edited by knight1006 on 2009-4-17 at 11:14 ]