发表回复 
我也写了一个鼠标中键控制音量的脚本
2008-08-09, 22 : 38
我也写了一个鼠标中键控制音量的脚本
论坛已经有人发了一个了,但那个需要Autohotkey_L的支持,我写的这个功能一样,但不需要Autohotkey_L的支持。关键代码如下:
代码: (全选)
;当鼠标位于任务栏时,鼠标中键滚向与自己相反的方向增大音量
VolumeControlUp()
{
;设置屏幕为基坐标系
CoordMode,Mouse,Screen

;base为任务栏上界的纵坐标,这个值可以用AutoIt3 Window Spy获得
base = 770
;获取当前鼠标的纵坐标
MouseGetPos,,Y

;若纵坐标大于任务栏的上界坐标,则鼠标位于任务栏内
if (Y > base)
{
;滚轮滚动一次增加的音量为1,这个值可以自己调节
SoundSet,+1
}
;若纵坐标小于任务栏的上界坐标,则鼠标位于任务栏外
Else
{
; 正常发送该动作的功能
MouseClick,WU
}
Return
}
;当鼠标位于任务栏时,鼠标中键滚向自己的方向减小音量
VolumeControlDown()
{
CoordMode,Mouse,Screen

base = 770
MouseGetPos,,Y

if (Y > base)
{
SoundSet,-1
}
Else
{
MouseClick,WD
}
Return
}
;当鼠标位于任务栏时,按下鼠标中键静音
VolumeControlMute()
{
CoordMode,Mouse,Screen

base = 770
MouseGetPos,,Y

if (Y > base)
{
Send,{Volume_Mute}
}
Else
{
MouseClick,Middle
}
Return
}
WheelUp::VolumeControlUp()
WheelDown::VolumeControlDown()
MButton::VolumeControlMute()
只注释了一个函数,其他两个函数差不多了,就不再赘述。

Let's do it better!
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-09, 23 : 56
 
不是每个人的任务栏都在下面,有些人喜欢在上面,有些人喜欢在旁边。当然,你的代码给了大家个思路。:)

[ 本帖最后由 bugmenot 于 2008-8-9 23:57 编辑 ]
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-10, 00 : 17
 
呵呵 有那么麻烦么??
代码: (全选)
WheelUp::SoundSet, +10
WheelDown::SoundSet, -10
就两句吧 !
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-10, 00 : 21
 
那还是借用 Lexikos的MouseIsOver(WinTitle)这个函数好了,那样不论你的任务栏在哪里都能准确判断了。
代码: (全选)
MouseIsOver(WinTitle) {
MouseGetPos,,, Win
return WinExist(WinTitle . " ahk_id " . Win)
}
WheelDown::
If (MouseIsOver("ahk_class Shell_TrayWnd"))
        SoundSet,-1
Else
        MouseClick,WD
Return

WheelUp::
If (MouseIsOver("ahk_class Shell_TrayWnd"))
        SoundSet,+1
Else
        MouseClick,WU
Return

MButton::
If (MouseIsOver("ahk_class Shell_TrayWnd"))
        Send,{Volume_Mute}
Else
        MouseClick,Middle
Return

[ 本帖最后由 rainerzhou 于 2008-8-10 00:26 编辑 ]

Let's do it better!
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢rainerzhou
2008-08-10, 00 : 22
回复 地板 BLooM2 的帖子
那两句没判断鼠标是否位于任务栏上哎

Let's do it better!
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-10, 01 : 38
 
恩 这回的代码就 比较漂亮了!
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-10, 08 : 09
 
B2,图片不存在。另,那样的代码是全局的,滚轮还有更多的用处。

rainerzhou,thx,试试。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-10, 08 : 15
 
SoundSet,+1
怪不得没感觉。。。修改为 SoundSet,+10 效果明显,再加上可视化的话,perfect!
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-10, 14 : 11
 
修改了一下,增加了一个Tooltip用来显示当前音量以及静音状态:
代码: (全选)
MouseIsOver(WinTitle) {

MouseGetPos,,, Win

return WinExist(WinTitle . " ahk_id " . Win)

}

WheelDown::

If (MouseIsOver("ahk_class Shell_TrayWnd"))

{

        SoundSet,-3

        SoundGet,volume

        ToolTip,当前音量%volume%`%

        Sleep,1000

        ToolTip

}

Else

        MouseClick,WD

Return



WheelUp::

If (MouseIsOver("ahk_class Shell_TrayWnd"))

{

        SoundSet,+3

        SoundGet,volume

        ToolTip,当前音量%volume%`%

        Sleep,1000

        ToolTip

}

Else

        MouseClick,WU

Return



MButton::

If (MouseIsOver("ahk_class Shell_TrayWnd"))

{

        Send,{Volume_Mute}

        SoundGet,master_mute,,mute

        ToolTip,静音%master_mute%

        Sleep,1000

        ToolTip

}

Else

        MouseClick,Middle

Return

Let's do it better!
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-10, 15 : 35
 
停一秒,+3 太慢了,还不如直接用系统的。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-10, 20 : 57
 
以 10 为增量,并且用了 TrayTip 来显示音量。

MouseIsOver(WinTitle) {
MouseGetPos,,, Win
return WinExist(WinTitle . " ahk_id " . Win)
}
WheelDown::
If (MouseIsOver("ahk_class Shell_TrayWnd"))
{
SoundSet,-10
SoundGet,volume
TrayTip, 音量, % Ceil(volume)`%,1
}
Else
MouseClick,WD
Return

WheelUp::
If (MouseIsOver("ahk_class Shell_TrayWnd"))
{
SoundSet,+10
SoundGet,volume
TrayTip,音量, % Ceil(volume)`%,1
}
Else
MouseClick,WU
Return

MButton::
If (MouseIsOver("ahk_class Shell_TrayWnd"))
{
Send,{Volume_Mute}
SoundGet,master_mute,,mute
TrayTip,静音,%master_mute%,1
}
Else
MouseClick,Middle
return
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
[+] 1用户表示感谢bugmenot
2008-08-10, 22 : 35
 
学习了!!
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-11, 11 : 50
 
引用:原帖由 bugmenot 于 2008-8-10 20:57 发表 [Image: back.gif]
以 10 为增量,并且用了 TrayTip 来显示音量。

MouseIsOver(WinTitle) {
MouseGetPos,,, Win
return WinExist(WinTitle . " ahk_id " . Win)
}
WheelDown::
If (MouseIsOver("ahk_class Shell_TrayWnd"))
{ ...
以多少为增量完全根据个人习惯,10我就觉得太大了。TrayTip很多时候会被前面的窗口挡住,个人觉得不太好。

Let's do it better!
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-12, 08 : 54
 
没遇到过 TrayTip 被挡住。。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-23, 00 : 02
回复 11楼 bugmenot 的帖子
先谢谢楼主。

可否把TrayTip提示框的显示时间设置短点,3-5秒即可。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-01-19, 14 : 32
 
学习了,音量控制

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-03-01, 10 : 50
 
还在学习中,先拿来用了,谢谢
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-03-22, 22 : 48
 
-{:3_51:}第三行 写的 好简单哦 (*^__^*) 嘻嘻……
-偶 喜欢哦
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2011-03-28, 20 : 17
 
在win7和vista中,soundset不能改变系统音量了。帮助文件里面有个解决办法:In the properties dialog for the file "AutoHotkey.exe" (or a compiled script), change the compatibility setting to "Windows XP".即将脚步编译,然后以兼容模式运行。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-09-17, 15 : 43
RE: 我也写了一个鼠标中键控制音量的脚本
@bugmenot
TrayTip 来显示音量很不错,可惜只能调整音量,不能调整波形。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


联系我们 | Autohotkey 中文站 | 回到顶部 | 回到正文区 | 精简(归档)模式 | RSS 聚合