|
作为蛋疼群的一员,正如sxd所说:不蛋疼/装13不足以在此群立足.
因此,此为蛋疼贴+装13+无水平贴.不喜请按下Ctrl+W
作为一个捡破烂的,硬盘里面垃圾多是必然的.
我搜集了700G的MP3音乐(APE啥的另算,低于192Kbps的直接丢弃,按专辑下,电骡上拖,0DAY上拉).
改ID3倒是好说,因为有现成的工具(即使里面没有任何ID3信息)自动匹配ID3与MP3.
下歌词才是一个问题.特别是我那蛋疼的网速下.
现在研究研究:
下歌词要解决几个问题:
1.歌词资源多.
2.下载速度快.
3.识别率高.
综合了一下认为某度旗下的产品<千千X听>适合下歌词.资源,速度,识别率都不是问题,按照MP3目录保存的功能也有了.
开刀:Global $hWnd = ControlGetHandle("[class:TTPlayer_PlayerWnd]","","SkinButton11")
While 1
If Not IsHWnd($hwnd) Then Exit
ControlClick($hWnd,'','')
Sleep(10000)
WEnd
依靠鼠标每10秒点击下一曲按钮来让<千千X听>下歌词.
问题来了.ControlClick会让处于后台的窗口置于前台,严重影响了观赏日本爱情动作片,欧美动物世界的心情.
作为一个控件,必须处理用户与程序的交互信息.例如:我点击了一个XX按钮,按钮会收到一个鼠标点击的信息.而这个带按钮的程序就必须对这类消息进行处理,如果不处理,这个按钮就没有任何意义.
由此,我参考MSDN文档(http://msdn.microsoft.com/en-us/library/bb775941(VS.85).aspx),发现有如下几个鼠标消息可以进行尝试:
BM_CLICK 单击
WM_LBUTTONDBLCLK 双击
WM_LBUTTONDOWN 鼠标左键按下
WM_LBUTTONUP 鼠标左键释放
怎么找到这些事件的常量值? Google:#define WM_LBUTTONUP
经过测试,BM_CLICK <千千X听>不工作,WM_LBUTTONDBLCLK不符合我们的要求.所以我们使用WM_LBUTTONDOWN和WM_LBUTTONUP
为什么控件不响应单击事件?因为要响应哪些事件是由控件本身定义的.而且控件还可以定义属于自己的消息.
再次改下代码:Global $WM_LBUTTONDOWN = 0x0201
Global $WM_LBUTTONUP = 0x0202
Global $hWnd = ControlGetHandle("[class:TTPlayer_PlayerWnd]","","SkinButton11")
While 1
If Not IsHWnd($hwnd) Then Exit
_SendMessage($hWnd,$WM_LBUTTONDOWN)
_SendMessage($hWnd,$WM_LBUTTONUP)
Sleep(10000)
WEnd
Func _SendMessage($hWnd, $iMsg, $wParam = 0, $lParam = 0, $iReturn = 0, $wParamType = "wparam", $lParamType = "lparam", $sReturnType = "lresult")
Local $aResult = DllCall("user32.dll", $sReturnType, "SendMessageW", "hwnd", $hWnd, "uint", $iMsg, $wParamType, $wParam, $lParamType, $lParam)
If @error Then Return SetError(@error, @extended, "")
If $iReturn >= 0 And $iReturn <= 4 Then Return $aResult[$iReturn]
Return $aResult
EndFunc ;==>_SendMessage
PS:可以设置静音后最小化.
---------
全文完. |
评分
-
查看全部评分
|