【开坑】稻米鼠的 AutoHotKey 源码分享贴【2015/7/24】

本人坑王,开坑太多,债主无数,背包跑路中……但是绝不忘沿路开坑。

觉得 AutoHotKey 很好很好,其实这是很久以前就开始的事情了。于是写了些小工具,还没写完,把草稿发出来大家玩。

QQ 右下角弹窗自动关闭工具

2015/7/24 - 修正了一些误杀。如果仍有误杀请查看日志文件,并向我汇报,谢谢~

2015/8/02 - 去掉了托盘的弹出提示,要不然 Win10 下太烦。提高了响应时间。

2015/08/12 完善日志格式,本工具正式毕业

打包好的 exe 文件下载——下载地址

#Persistent
SetTimer, KillQQPop, 1000
return

KillQQPop:
IfWinExist, ahk_class TXGuiFoundation
{
	;sleep 1000
	WinGetPos, Xpos, Ypos, Width, Height
	if (Width < 400 AND A_ScreenWidth <(Xpos + 400) AND A_ScreenHeight <(Ypos + 400))
	{
		WinGetTitle, Title
		if (StrLen(Title)!= 0 AND Title!= "QQ" AND !(Title~="@") AND !(Title~="(") AND !(Title="TXMenuWindow"))
		{
			WinClose
			;TrayTip,喵了腾讯, 关闭了 %Title%
			file := FileOpen("log.txt", "a")
			file.WriteLine(A_YYYY " " A_MM " " A_DD " " A_Hour ":" A_Min ":" A_Sec " —— " Title  "`n`r")
			file.Close()
			;sleep 1000
			;TrayTip
		}
	}
}
return

###空格键预览

仿 Mac 效果,你懂的,现在只支持图片和图标,但是我还没做格式过滤……

#ifWinActive ahk_class CabinetWClass
$Space::
    Clip_Data:=Clipboard
    Clipboard:=
    send {space}
    send ^c
    sleep 100
    filepath:=Clipboard
    Clipboard:=Clip_Data

    if(filepath="")
    {
        return
    }else{
        ;run %filepath%
        GUI, MainWin:New, , File Priview
        GUI, -Caption +AlwaysOnTop +Owner
        Gui, Margin, 0, 0
        Gui, Add, Picture, vpicpre, %filepath%
        Gui, Show, AutoSize Center
        WinGetPos, Xpos, Ypos, Width, Height, A
        picwidth := A_ScreenWidth*0.8
        if (Width>picwidth)
        {
            GuiControl,,picpre,*w%picwidth% *h-1 %filepath%
            Gui, Show, AutoSize Center
        }
        picheight := A_ScreenHeight*0.8
        if (Height>picheight)
        {
            GuiControl,,picpre,*w-1 *h%picheight% %filepath%
            Gui, Show, AutoSize Center
        }
    }
return

#IfWinExist, File Priview
    $space::
    GUI, MainWin:Destroy
return

你们有啥好玩的也拿出来好不好?比如仿 Mac 窗口切换的有没有?

1 个赞

小老虎以前写过一个模拟鼠标点击的,用来在QQ农场点送礼物,或者是红警里造30个坦克。

请问如何实现在浏览器中按下数字键1然后延迟1秒或2秒才被发送到浏览器中?

弹窗自动关闭的这个厉害,有空学习一下,一直用的修改版的QQ没弹窗。办公室没QQ但是有些按钮误按会弹窗,一直用的PT什么网站的那个关闭,但是会弹窗检测更新的对话框,反馈过作者没回应。
没创造什么有趣的功能诶,都是网上其他人发布的东西拿来修修改改弄成自己想要的。比如托盘右键切换代理,按快捷键在屏幕上识别相应的按钮并按下去。
一直想做那个,识别指定窗口自动切换到指定输入法,网上那个“超级啊猛”有在AHK论坛里发过一个例子,试过不行,后面他好像更新了,但没再试过了。
还有鼠标滚轮穿透,在小众介绍鼠标滚轮穿透的文章底下看过一些AHK链接,试验了好些个,本来感觉可以了,结果一到公司软件上就歇菜,然后就没再花过时间了。
对AHk的学习热情一直不是非常高,就停留在想达成某些功能再研究的阶段。感觉把时间花在这上面好浪费啊!

不同程序不同输入法,这个很有用。例如一些java程序(Intellij等),如果使用了google拼音,关闭时界面看上去关闭了,但实际后台的process没退出,太消耗资源,常常需要我手工杀进程。
alay9999说的方法可行,就是每次都切换感觉还不是最好,要是能判断出程序和当前程序用的输入法,如果需要才切换,这样最完美。
一直想做一个出来,但太懒了。盼高人出手。

大神啊,能不能给我解释一下这一段代码的意思?

if (StrLen(Title)!= 0 AND Title!= “QQ” AND !(Title~=“@”) AND !(Title~=“(”) AND !(Title=“TXMenuWindow”))

尤其是“@”、“(”这样写我还是第一次见到,AHK初学者,问题幼稚,还望不吝赐教啊~~

前阵子折腾GoldenDict时现学现写了一个划译/选译脚本
使用:

  1. [手动]鼠标拖选/双击选词
  2. [自动]发送到剪贴板
  3. [自动]发送翻译热键
  4. pause 键启用/停用
Pause::Suspend
~LButton::
CoordMode, Mouse, Screen
SetKeyDelay 0, 10
c := 0

MouseGetPos, x1, y1
KeyWait, LButton
MouseGetPos, x2, y2
if (x1<>x2 or y1<>y2) {
	gosub, Copy
}
else if (A_priorHotKey = "~LButton" and A_TimeSincePriorHotkey < 400){
	gosub, Copy
}
return

Copy:
c := 1
Send ^c
return

OnClipboardChange:
if (c) {
	Send ^{c 2}
}
return

注:纯天然新手+经测自足→没封装exe&或许有bug
另:**强烈欢迎补完!**比如添加进程检测以实现自动启用/关闭、封装exe、加右键菜单等

是这样啊,好好,我再研究下,感谢大神分享源码供初学者参考学习啊!

如果标题里有这些字符,只是一个字符判断没有什么深刻的意思

我猜测一个不同程序不同输入法的实现方式。我隐约记得可以设置快捷键直接切换到某个输入法的。我想检测程序,直接快捷键切换就 OK