近来找不到 blogging 的动力,火山我从火星回到地球(家里终于安了 ADSL)一个多星期。再拖下去就不知道什么时候才搞定读者的 AHK 问题了。
Q1:求个代码,获取屏幕上某块区域的位置(上,下,左,右),就像截图软件的区域截图那样截取,然后激活一窗口,将这四个值粘贴到四个输入框内(按TAB跳到下一输入框)。来自小众读者 tireless 的提问。
A1:代码在下面,顺便,tireless 问的第二个问题我没明白,请说详细一点。
CoordMode Mouse, Screen
;设置鼠标的坐标系统,以屏幕为绝对坐标。^LButton::
MouseGetPos x0, y0, id0 ; 鼠标开始拖动的位置
Loop
{
Sleep 20 ; 暂停 20 毫秒
GetKeyState, keystate, LButton, p ; 获得左键的按键状态
IfEqual, keystate, U, {
MouseGetPos, x1, y1 ; 鼠标左键松开时候的位置
WinActivate Appinn.com ; 激活标题包含 Appinn.com 的程序
; 假设光标已经在第一个输入框里
clipboard = %x0%, %y0%
clipwait
send ^v
send {tab}
; 发送其他三个坐标的代码我就不列出了,请自行补完。
break ; 最后不要忘记跳出循环哦。
}
}
return
Q2:请小众同志看一下这篇文章:【教程】教你怒看迅雷在偷偷上传你盘上什么文件?占多少带宽?如何毁你硬盘?能不能用AHK写个自动清除c:\windows\system32\cid_store.dat文件的程序呢?? – 来自锐风的提问。
A2:
Loop
{
IfExist C:\windows\system32\cid_store.dat
FileDelete, C:\windows\system32\cid_store.dat
sleep 10000
}
你终于回来了
沙发…..
我看到迅雷的介绍。。。把我吓着了。
多谢解答!
* 第1个问题,有点麻烦的是,如果窗口没占满屏幕,首先要点击一下桌面,这样获取的坐标才是相对于屏幕的。。。有没有什么解决办法?
* 原来提出的第2个问题,我再努力地表达:执行这么一个动作…激活一窗口,在那窗口发送“点击”动作,然后把鼠标指针移到桌面的某个位置…就这样(我遇到的问题是,我无法让指针移动- -)
* 双击的命令是什么?
你是不是少 Copy 这句:
CoordMode Mouse, Screen
;设置鼠标的坐标系统,以屏幕为绝对坐标。
回答第二个问题:
上次你贴的代码是:
^`::
WinActivate, Gif·gIf·giF ahk_class JMainWindow
Mousemove 29,92,0
Send {click}
#IfWinActive
Mousemove 582,385,0
return
我修改为
^`::
WinActivate, Gif·gIf·giF ahk_class JMainWindow
Mousemove 29,92,0
Send {click}
send #d
; 发送一个 Win + D 不就回到桌面?
CoordMode Mouse, Screen
;设置鼠标的坐标系统,以屏幕为绝对坐标。
Mousemove 582,385,0
return
回答第三个:没有双击的命令,可以用两个“MouseClick”命令代替。
对啊,为什么我会少copy这一句。。。但是加上这一句后,激活那个程序还要双击一下输入框,这样又点错位置了,也就是要取消“以屏幕为绝对坐标”了,怎么取消?
CoordMode Mouse, Relative
这样就是相对坐标了。
谢谢,都解决了
[…] AHK 快餐店 – 读者互动[2] | 小众软件 – Appinn 第二个很好 (tags: 软件) […]
支持煋灿~
关于您说的那个迅雷的问题,我试了一下,如果真的就只是那个文件的问题的话,其实可以更简单的解决:
找到C:\WINDOWS\system32\cid_store.dat这个文件,然后用记事本打开,删除全部内容,或者写上“迅雷是个无耻的大傻瓜”之类的话,保存,然后设置该文件属性,选择“只读”,就搞定了!
我没有下载一些监测工具,但是,我试了一下打开迅雷,下载一些文件,然后关闭迅雷,重新启动迅雷,这个文件都没有再被改变,应该就算是搞定了吧?
对哦,楼上说的办法不错。对付 QQ 的广告也同样的办法。
其实我是因为没找到留言板所以..想在这里问一下能不能写个截屏代码来截取像是新浪BLOG这样的页面呢?我用马桶的截屏按钮和FF的插件都不能截取整个页面,截取下来的只有首屏的图,下面的都没有,不知道是为什么,其他大部分网站都可以截取整个页面的。可能是因为他用FLASH架构的或者是怎么样么? 谢谢!
用截图软件吧,用 AHK 来写的话,我也不懂。抱歉。
一直 看 AHK 的教程
问一下 作者:
有么有 写完?
有没有 一个文件的合集? 离线看 更方便点.
没有的话 我可不可以 整理的一个.
这个难说,灵感随时会蹦出来。
你要整理的话,可以。遵循小众的 Creative Commons
* 本站内容受著作权法保护。
* 个人 blog 转载时请遵循“署名-非商业用途-保持一致”的创作共用协议;
* 商业网站或未授权媒体不得复制本站内容
比如vb下的简单代码为:
Private Sub Command1_Click()
Dim str As String
Dim n As Integer
Dim arr(1000) As String * 1
str = Text1.Text
n = Len(str)
For i = 0 To n – 1
arr(i) = Mid(str, i + 1, 1)
Next i
For i = 0 To n – 1
Select Case arr(i)
Case “a”
arr(i) = “z”
Case “b”
arr(i) = “y”
Case “c”
arr(i) = “x”
Case Else
End Select
Next i
str = “”
For i = 0 To n – 1
str = str & arr(i)
Next i
Text2.Text = str
End Sub
呵呵 刚接触AHK,弱弱的问个问题
提问:
我想把一些文字进行加密(简单的字母替换,如ab,cd),
用
a::b
c::d
在输入时很容易实现
但是我不知道怎样将已经“加密”好的字符串还原为明文?
怎么个加密法?
加密原理就是凯撒加密法,即简单的字母替换
比如替换表:
原文:A B C D E
密文:Z Y X W V
进行一一代换,当然替换表能够自定义,而不是简单的AZ,BY配对
有个思路:将字符串分解为单字符的数组,再对每个数组元素进行判断替换,之后重新把数组组合成字符串输出
这在其他语言应该是很容易实现的
不知道AHK下要怎样做(就是想知道AHK有没有数组和CASE语句功能的函数
哦回复错地方了
比如vb下的简单代码为:
Private Sub Command1_Click()
Dim str As String
Dim n As Integer
Dim arr(1000) As String * 1
str = Text1.Text
n = Len(str)
For i = 0 To n – 1
arr(i) = Mid(str, i + 1, 1)
Next i
For i = 0 To n – 1
Select Case arr(i)
Case “a”
arr(i) = “z”
Case “b”
arr(i) = “y”
Case “c”
arr(i) = “x”
Case Else
End Select
Next i
str = “”
For i = 0 To n – 1
str = str & arr(i)
Next i
Text2.Text = str
End Sub
不好意思,现在才回复你在小众的留言:
不懂请自行翻阅 ahk 的帮助
in=abc
StringSplit,out,in,
loop %out0% ; %out0% 是 out 分解后的个数
{
if out%A_index% = a
{
out%A_index% = b
continue
}
if out%A_index% = b
{
out%A_index% = c
continue
}
if out%A_index% = c
{
out%A_index% = a
continue
}
}
loop %out0%
{
temp=% out%A_index%
; 这里我就不解释了,请看:http://www.appinn.com/ahk-fast-food-restaurant-17-unplug-all-usb-device/
final=%final%%temp%
}
clipboard=%final%
请问如何只在桌面和资源管理器使用AHK?
就是在桌面和资源管理器中热键有效
试试以下代码
~MButton::
WinGetClass, class, A
If class in CabinetWClass,WorkerW
tooltip, %class%
return
有时有用,有时没用
怎么个有时有用,有时没用法?
好像又总是有用了,桌面的类是不是有两个,有时是WorkerW有时是Progman?
不清楚哦,你自己测试一下好吗?
请问如何在QQ登陆框中粘贴,代码是什么?谢谢
粘贴什么?密码?Q号?
粘贴是不可能的
你可以写send,XXXXXX
你是想要快捷登陆吗?
当然是粘贴密码了
用普通的方法不行
Ctrl+v不能用 右键也不能用
这个功能 AHK 也无能为力,只有破坏密码旁边那个锁。这样密码很容易被盗。
sfuoet您好:
我是一个游戏迷,主要玩,听说可以用AHK同时控制5个帐号,
我就试了下,可发现不行,我也不知道是哪里出了问题了,能帮忙看下吗?谢谢拉!
1,在AutoHotKey文件夹里新建一个记事本,保存为moshou.ini文件,双击打开后在记事本里写下(我有两个帐号):
WinGet,wowid,List,魔兽世界
~1::
KeyWait 1
IfWinActive,魔兽世界
{
ControlSend,,1,ahk_id %wowid1%
ControlSend,,1,ahk_id %wowid2%
Return
}
可我试了半天也没用啊,到底是哪里出错了?,还有个问题,若该文件继续往下写,您看我写的对不对啊?
~2::
KeyWait 2
IfWinActive,魔兽世界
{
ControlSend,,2,ahk_id %wowid1%
ControlSend,,2,ahk_id %wowid2%
Return
}
~3::
KeyWait 3
IfWinActive,魔兽世界
{
ControlSend,,3,ahk_id %wowid1%
ControlSend,,3,ahk_id %wowid2%
Return
}
能告诉我到底我写的对不对啊?谢谢拉!!
AHK 是一种脚本程序,所有的脚本的扩展名都是 ahk,我知道你把帐号写进去 moshou.ini 是想从里面读取帐号是吧?
你的代码是保存在一个扩展名为 ahk 的文件里面吗?
你是打开了两个魔兽的窗口对吧?
试试下面的代码
count=0
WinGet, id, list,,, Program Manager
Loop, %id%
{
this_id := id%A_Index%
WinGetTitle, this_title, ahk_id %this_id%
IfInString,this_title,魔兽世界
{
WinActivate, ahk_id %this_id%
if count=0
{
send 用户名1{tab}密码1{enter}
; 这里是模拟的键盘的动作,请修改用户名和密码。
count=1
}
else
{
send 用户名2{tab}密码2{enter}
}
}
}
我看明白你提供的代码了。
测试了那段代码,是可行的,只不过,激活的窗口会出现,按下一次按钮出现重复的数字,所以我修改了一下,请打开两个记事本测试。
而且代码的~1不是指数字小键盘,而是主键盘的数字,因为大家输入密码都习惯用数字小键盘,所以以为代码有问题。
如果要修改为数字小键盘,请吧 ~1:: 修改 ~Numpad1::
其他代码(~2::)类似。
还有把 KeyWait 1 修改为 KeyWait Numpad1
其他代码(KeyWait 2)类似。
WinGet,wowid,List,无标题 – 记事本
~1::
KeyWait 1
IfWinActive,无标题 – 记事本
{
winget,CurrentID,ID,A
if CurrentID<>%wowid1%
ControlSend,,1,ahk_id %wowid1%
if CurrentID<>%wowid2%
ControlSend,,1,ahk_id %wowid2%
/* 这个是注释符号,要用的时候请删除这一行。还有后面对应的星号斜杠也要删除。如果有三个窗口,看代码:
if CurrentID<>%wowid3%
ControlSend,,1,ahk_id %wowid3%
*/
Return
}
~2::
KeyWait 2
IfWinActive,无标题 – 记事本
{
winget,CurrentID,ID,A
if CurrentID<>%wowid1%
ControlSend,,2,ahk_id %wowid1%
if CurrentID<>%wowid2%
ControlSend,,2,ahk_id %wowid2%
Return
}
我也想用AHK同时映射一台机子里的多个魔兽世界帐号,可我用了sfuoet写的代码,可发现实际玩的时候还是没反应,有几个问题想请教下1,是不是把所有关于魔兽的代码写进INI文档后再改为扩展名为ahk的文件吗?这个AHK文件是保存在AHK的目录里还是保存在魔兽世界的游戏目录里?
2,你写的代码里的用户名和密码是指电脑登陆XP系统的用户名和密码吗?
我若是用一台电脑同时多开几个魔兽帐号的话,是不是就不用send 用户名了?
难道是指的魔兽世界的帐号和密码吗?
首先你的电脑上要安装 AutoHotKey,ahk 是 AutoHotKey 的专用扩展名。
这个代码我没有测试过,只是写出来给大家参照。这个代码可以用记事本编辑,保存为 ahk 文件就可以了。ahk 放在哪里都没所谓。
这里的用户名和密码当然是魔兽的啦。send 是模拟键盘的命令,发送后面的按键到当前窗口。
建议用自带的录制 ahk 脚本工具,录制登录过程,然后根据需要修改代码。
哦,录制登录过程,是不是用的AutoScriptWriter(recorder)?怎么录制啊?登录魔兽世界可是有密保的.等周四再试试看吧!
嘿嘿,问了这么多低级的问题,可别笑话我哦!
每个人都是从新手开始学起的,笑话你,不就是笑话我自己了?呵呵
点击那个大大的“record”按钮,然后按照你平时登录两个魔兽世界的步骤做。登陆完毕点击左上角的“stop”就可以看到代码了。
把录制到的代码保存为 ahk 文件。录制的这些代码不一定就是完美的,需要测试。
哦,谢谢拉!
等我试过后有问题再问你吧!真是非常感谢.
sfufoet,你好!
我上午用你教我的方法把两个帐号的登录过程都录制下来了,可我希望用AHK
录制下来之后,窗口不就出现好多代码了?
把代码复制下来,粘贴到记事本,保存为 ahk 文件。
可我希望用AHK同时映射我已登录的帐号啊,实际的游戏登录过程我感觉并不需要AHK的,我想用AHK把电脑键盘上的1,2,3,4,5,6,7,8,9,0键同时映射到两个游戏帐号里.我只想在一个游戏界面(也就是一个帐号)按下1的同时,另一个最小化的游戏界面里的1键也能同时按下,我试了好久也没成功,你能教教我吗?谢谢拉
我看明白 njxn 提供的代码了。
测试了那段代码,是可行的,只不过,激活的窗口会出现,按下一次按钮出现重复的数字,所以我修改了一下,请打开两个记事本测试。
而且代码的~1不是指数字小键盘,而是主键盘的数字,因为大家输入密码都习惯用数字小键盘,所以以为代码有问题。
如果要修改为数字小键盘,请吧 ~1:: 修改 ~Numpad1::
其他代码(~2::)类似。
还有把 KeyWait 1 修改为 KeyWait Numpad1
其他代码(KeyWait 2)类似。
WinGet,wowid,List,无标题 – 记事本
~1::
KeyWait 1
IfWinActive,无标题 – 记事本
{
winget,CurrentID,ID,A
if CurrentID<>%wowid1%
ControlSend,,1,ahk_id %wowid1%
if CurrentID<>%wowid2%
ControlSend,,1,ahk_id %wowid2%
/* 这个是注释符号,要用的时候请删除这一行。还有后面对应的星号斜杠也要删除。如果有三个窗口,看代码:
if CurrentID<>%wowid3%
ControlSend,,1,ahk_id %wowid3%
*/
Return
}
~2::
KeyWait 2
IfWinActive,无标题 – 记事本
{
winget,CurrentID,ID,A
if CurrentID<>%wowid1%
ControlSend,,2,ahk_id %wowid1%
if CurrentID<>%wowid2%
ControlSend,,2,ahk_id %wowid2%
Return
}
这是我上午刚录制的原始文件,你帮忙看下:
—————-
代码收到。-sfufoet
你呀~,间接把你的魔兽密码和帐号暴露出来了。幸亏你的留言我及时发现。
你要的这个功能我无能为力。sorry。
@sfufoet 你呀~,他的魔兽密码和帐号都发到我邮箱里啦,修改留言也晚啦。幸亏我不玩网游。
兄弟快点改密码……估计很多人都订阅了……
楼上二猪说的对,快修改魔兽密码。
密码我改过了,再说登陆游戏还要密保卡的,嘿嘿,谢谢拉!
sfufoet,您好
我也是在网上看到相关的文章介绍,才注意到可以用AHK同时映射两个游戏帐号的,上面所写的代码和NJXN在5月2日所写的帖子上的代码一样,我试了好久也没成功,最近有一朋友介绍我看了<>第16期上也有相同的介绍,我相信用AHK是能做到同时操控多个帐号的,可我就是不知道到底是哪一步没做好,njxn提供的那个代码到底对不对?若没错的话到底应该怎么用?能教教我吗?谢谢拉!实在不行给我指个方向也行啊!
哦,是电脑报08年第16期E5版
你有电脑报那一期的扫描吗?网络上找不到。verycd 才更新到 4.21 的
没有,只有一份报纸,我上电脑报网站也没发现,只更新到第15期的.
首先小谢一下今天下午的小众的回答
然后我做了一个文本快抓,就叫复制宝宝吧
我现在抓网文用网博士,不过有时遇到好的名言名句或少量的文本,或者比较乱内容较少的文本时就不想抓到网博士里整理
所以做了这么一个东东只抓文本到一个记事本文件里,以后有空再整理,测试的时候发现不止网页,任何可以复制文本的地方都可以,赚了
源码:
#c::
send ^c
clipwait
FileAppend, %clipboard%, C:\copybaby.txt
sleep 100
FileAppend, `n==============================================`n`n, C:\copybaby.txt
sleep 100
tooltip, 干完活啦
sleep 1000
; 时间暂停 1秒
tooltip,
; 关闭鼠标提示
return
结束.用法选择文本后按WIN+C键会直接保存入指定文件.
另外网上AHK的资源好少啊,很想系统学习一下
多谢你的代码。呵呵。
国内目前有个小论坛:http://ahk.5d6d.com/
这个我知道,又卡又少,不能在深度上友情开个AHK专版么
我不喜欢泡论坛,如果你喜欢深度,可以给深度建议。
文件夹想进就进 的汉化脚本能给我发一份么
你提供的两个脚本都下不来
我想研究一下做个闹钟什么的
最好小众先做出来
功能有
1当前时间显示
2定时或延时设置
3提示方法音乐(默认选定)\文字(提示5秒)\启动程序或文件(默认关机)
sfufoet 最近我在把以前用按键精灵做的几个脚本转译成AHK,在实现下面几个基本命令时比较麻烦,想学学你是怎么样写的
脚本启动后
1某键暂停/某键继续
2可随时中止热键
3可以设定运行时间
1、是按住某个按键和弹起某个按键吗?
2、用hotkey命令,参考这里
http://www.appinn.com/coy-paste-hotkey/
3、在特定时间运行程序:
用这些自带的变量来获得系统的时间,判断时间,然后运行(run)程序
A_Hour
A_Min
A_Sec
想知道 ahk 里同时按下两个字母的热键怎么写~
例如同时按下a、h、k三个字母打开ahk主程序
没有三字母的热键组合。只有两个字母的热键组合。
a & h::run 目标
如果要三个字母的话,只能用热字符串。
::ahk::run 目标