发表回复 
分享自己用的脚本,研究了几天autohotkey后自己修改、编写的,请大家指点
2008-08-07, 21 : 30
分享自己用的脚本,研究了几天autohotkey后自己修改、编写的,请大家指点
原来一直用hoekey,功能不够强,但胜在简单。几天前发现autohotkey,研究几天后有一点小小心得,参考别人的脚本,再结合自己的使用习惯编写了自己的代码,​顺利完成了从hoekey到autohotkey的转型!呵呵,现把代码都贴出来,请大家指点。

功能说明:
1、通过启动Autohotkey调用Autohotkey.ini,在ini文件里引用我需要的脚本,脚本文件放在/myahk目录下。
2、win+`键可将当前窗口隐藏,并在托盘图标里加入菜单。(mintotray.ahk,来自帮助文件的脚本展示)
3、win+Up增加音量,win+Down减少音量。(volcontrol.ahk,来自帮助文件的脚本展示)
3、win+Lbutton移动窗口,win+Rbutton调整窗口大小。(EasyWinDrag.ahk,也是来自帮助文件)
4、Lbutton+Rbutton复制,复制后按Mbutton粘贴,Ctrl+Mbutton可代替Ctrl+v。(此代码来自煎蛋,自己做了些修改,主要是在某些程​序中,如word,Lbutton+Rbutton后按ctrl+c是没有效果的,此时这个功能会失败。加入一句KeyWait, lbutton, u可解决此问题)
5、按下鼠标右键后移动鼠标可控制垂直、水平滚动条。(这是根据工作需要,自己编写的脚本,方便浏览大文本时快速翻页)
6、win+y用win spy查看当前窗口的信息。
7、win+c复制文件的完整路径
8、win+t当前窗口总在最前面

Autohotkey.ini:
代码: (全选)
#include myahk/mintotray_AES.ahk
#include myahk/volcontrol_AES.ahk
#include myahk/EasyWinDrag_AES.ahk
return                                                                                                        ;End of auto-execute section.

#include myahk/mintotray_Sub.ahk                                                ;将当前窗口最小化到系统托盘
#include myahk/volcontrol_Sub.ahk                                           ;音量控制
#include myahk/EasyWinDrag_Sub.ahk                                                ;窗口移动和缩放
#include myahk/hotkey.ahk                                                                ;快捷键的一些定义
#include myahk/hotstr.ahk                                                                ;自定义的缩略文字
#include myahk/mouse.ahk                                                                ;鼠标的一些快捷操作
mouse.ahk:
代码: (全选)
;;;;;;;;;;;;;;;;;;;;;;;;用鼠标实现复制粘贴;;;;;;;;;;;;;;;;;;;;;;;;
~LButton & RButton::
Hotkey, MButton, Paste
KeyWait, lbutton, u
send ^c
Hotkey, MButton, on
return

Paste:
send ^v
Hotkey, MButton, off
return

^MButton::
send ^v
return


;;;;;;;;;;;;;;;;;;;;;;;;按下鼠标右键后移动鼠标可控制垂直、水平滚动条;;;;;;;;;;;;;;;;;;;;;;;;
Rbutton::
mw_rbu:=True                ;mw_rbu记录是否使用正常的鼠标右键
MouseGetPos,mw_x1,mw_y1        ;记录起始鼠标位置
ControlGetFocus, mw_control, A
Loop
{
        GetKeyState,mw_Button,RButton,P ; 松开鼠标右键后退出循环
        If mw_Button = U
                break
                
        MouseGetPos,mw_x2,mw_y2                 ;获得目前的鼠标位置
        if (mw_y2=mw_y1) and (mw_x2=mw_x1)        ;点右键后如果没有移动鼠标则不做任何事
                continue
        Else
                mw_rbu:=False
                
        If (mw_y2>mw_y1)        ;点右键后如果上下移动鼠标则移动垂直控制条
                SendMessage, 0x115, 1, 0, %mw_control%, A
        Else
                SendMessage, 0x115, 0, 0, %mw_control%, A
                
        If (mw_x2>mw_x1)        ;点右键后如果左右移动鼠标则移动水平控制条
                SendMessage, 0x114, 1, 0, %mw_control%, A
        Else
                SendMessage, 0x114, 0, 0, %mw_control%, A
                
        mw_x1:=mw_x2
        mw_y1:=mw_y2
}
If        mw_rbu
        send, {RButton}                ;正常的鼠标右键功能
return
hotkey.ahk:
代码: (全选)
;;;;;;;;;;;;;;;;;;;;;;;;复制文件的完整路径;;;;;;;;;;;;;;;;;;;;;;;
#c::
send ^c
sleep,200
clipboard=%clipboard%
return


;;;;;;;;;;;;;;;;;;;;;;;;将firefox等程序最小化隐藏;;;;;;;;;;;;;;;;;;;;;;;;
!`::WinHide ahk_class MozillaUIWindowClass
!1::
WinShow ahk_class MozillaUIWindowClass
WinActivate ahk_class MozillaUIWindowClass
Return


;;;;;;;;;;;;;;;;;;;;;;;;快速运行应用程序;;;;;;;;;;;;;;;;;;;;;;;;
#n::run, c:\Green Software\document\EmEditor\emeditor.exe


;;;;;;;;;;;;;;;;;;;;;;;;alwaysontop;;;;;;;;;;;;;;;;;;;;;;;;
#t::WinSet, AlwaysOnTop, Toggle, A


;;;;;;;;;;;;;;;;;;;;;;;;用win spy检测当前窗口信息;;;;;;;;;;;;;;;;;;;;;;;;
#y::
WinGetClass, nowclass, A
run, AU3_Spy.exe
WinWait, Active Window Info (Shift-Alt-Tab to freeze display),
WinActivate ahk_class %nowclass%
Return
hotstr.ahk:
代码: (全选)
::/d::        ;输入日期简写
FormatTime, da, ,(yy.M.d)
send %da%
return

::/da::   ;输入日期完整,send中文会有乱码,要利用剪贴板
da = %A_YEAR%年%A_Mon%月%A_DD%日
clipboard = %da%
Send ^v
return

[ 本帖最后由 norchy 于 2008-8-7 21:32 编辑 ]
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-07, 22 : 08
 
不错 不错 多谢分享!很实用的功能
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-08-08, 11 : 11
 
多谢。
特别要补充的是,此代码不会和 左键 + 右键的快捷键冲突。

~RButton::
Hotkey, MButton, Paste
Keywait, LButton, d, t0.2
; 参数 d (down)表示按键处于按下状态,t0.2 是等待 0.2 秒。
if errorlevel = 0
; 如果返回的错误码(errorlevel,很多的 AHK 命令都会返回错误码,这个变量是 AHK 自带的。)是 0 ,也就是说上面的 Keywait 命令执行成功。如果是 1 的话,说明 Keywait 执行失败。失败说明我们按下了右键之后,没有在 0.2 秒内按下左键。
{
KeyWait, LButton, U
; 来自 norchy 的修改 http://ahk.5d6d.com/viewthread.php?tid=211。如 word,LButton + RButton 后按 Ctrl + C 是没有效果的,此时这个功能会失败。加入一句 KeyWait, LButton, U 可解决此问题。
send ^c
Hotkey, MButton, on
}
return

Paste:
send ^v
Hotkey, MButton, off
return

^MButton::
send ^v
return
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-11-15, 04 : 05
 
谢谢楼主,我的火狐隐藏与显示是用下面的代码的

;火狐的显示与隐藏
+^z::
Suspend Permit
process,exist,firefox.exe
IfWinExist, ahk_class MozillaUIWindowClass
WinHide, ahk_class MozillaUIWindowClass
Else if ErrorLevel
WinShow, ahk_class MozillaUIWindowClass
Else
SendPlay,+^z:
Return
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2008-11-16, 08 : 33
 
  这些功能要同时运行几个脚本吧。我都是用HOTKEYP来实现的,它本身就有这个功能了,也不用自己写脚本。我用的AUT脚本只有一个鼠标中键切换程序。
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2010-10-30, 22 : 33
 
mark,收藏

简单,再简单一点儿
博客 http://blog.csdn.net/liuyukuan
访问这个用户的网站 查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2010-10-31, 09 : 21
 
[i=s] 本帖最后由 wshw 于 2010-10-31 18:16 编辑 [/i]

你好楼主,“按下鼠标右键后移动鼠标可控制垂直、水平滚动条”这个脚本很实用,但是有个问题,使用这个脚本后opera浏览器的右键手势就失效了,请问该如何设置,谢谢!​
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
2017-09-18, 22 : 14 (这个帖子最后修改于: 2017-09-18 22 : 40 by abc001.)
RE: 分享自己用的脚本,研究了几天autohotkey后自己修改、编写的,请大家指点
很好的代码,不过mouse.ahk中
对于左右键一起按复制的文字,按中键可直接粘贴,且只能粘贴一次,而直接按CTRL+V或者CTRL+中键则可多次粘贴。
而对于CTRL+C复制的文字则按中键粘贴无效,必须按CTRL+中键才行。
因此我自己用的时候就去除^了,这样就无需使用键盘了,结果发现按中键还是只能粘贴一次,做了以下精简就没问题了,左右键复制,中键粘贴。
代码: (全选)
~LButton & RButton::
KeyWait, lbutton, u
; 如 word,LButton + RButton 后按 Ctrl + C 是没有效果的,此时这个功能会失败。加入一句 KeyWait, LButton, U 可解决此问题。
send ^c
return

MButton::
send ^v
return
查找这个用户的全部帖子
表示感谢 引用并回复 移动视图置页面顶端
发表回复 


论坛跳转:


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