AHK 快餐店 - 读者互动[2]
近来找不到 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
}
Tag: , AHK 2,075 views





* 第1个问题,有点麻烦的是,如果窗口没占满屏幕,首先要点击一下桌面,这样获取的坐标才是相对于屏幕的。。。有没有什么解决办法?
* 原来提出的第2个问题,我再努力地表达:执行这么一个动作…激活一窗口,在那窗口发送“点击”动作,然后把鼠标指针移到桌面的某个位置…就这样(我遇到的问题是,我无法让指针移动- -)
* 双击的命令是什么?
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”命令代替。
sfufoet reply on 三月 20th, 2008,11:08 上午:
tireless reply on 三月 20th, 2008,7:53 下午:
这样就是相对坐标了。
sfufoet reply on 三月 20th, 2008,8:27 下午:
tireless reply on 三月 20th, 2008,9:02 下午:
[...] AHK 快餐店 - 读者互动[2] | 小众软件 - Appinn 第二个很好 (tags: 软件) [...]
找到C:\WINDOWS\system32\cid_store.dat这个文件,然后用记事本打开,删除全部内容,或者写上“迅雷是个无耻的大傻瓜”之类的话,保存,然后设置该文件属性,选择“只读”,就搞定了!
我没有下载一些监测工具,但是,我试了一下打开迅雷,下载一些文件,然后关闭迅雷,重新启动迅雷,这个文件都没有再被改变,应该就算是搞定了吧?
sfufoet reply on 三月 25th, 2008,7:26 上午:
问一下 作者:
有么有 写完?
有没有 一个文件的合集? 离线看 更方便点.
没有的话 我可不可以 整理的一个.
你要整理的话,可以。遵循小众的 Creative Commons
* 本站内容受著作权法保护。
* 个人 blog 转载时请遵循“署名-非商业用途-保持一致”的创作共用协议;
* 商业网站或未授权媒体不得复制本站内容
sfufoet reply on 三月 20th, 2008,3:01 下午:
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
soapy reply on 三月 25th, 2008,11:18 上午:
提问:
我想把一些文字进行加密(简单的字母替换,如ab,cd),
用
a::b
c::d
在输入时很容易实现
但是我不知道怎样将已经“加密”好的字符串还原为明文?
sfufoet reply on 三月 25th, 2008,7:26 上午:
比如替换表:
原文:A B C D E
密文:Z Y X W V
进行一一代换,当然替换表能够自定义,而不是简单的AZ,BY配对
有个思路:将字符串分解为单字符的数组,再对每个数组元素进行判断替换,之后重新把数组组合成字符串输出
这在其他语言应该是很容易实现的
不知道AHK下要怎样做(就是想知道AHK有没有数组和CASE语句功能的函数
soapy reply on 三月 25th, 2008,9:46 上午:
比如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
soapy reply on 三月 25th, 2008,11:19 上午:
不懂请自行翻阅 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%
sfufoet reply on 四月 3rd, 2008,8:43 下午:
就是在桌面和资源管理器中热键有效
~MButton::
WinGetClass, class, A
If class in CabinetWClass,WorkerW
tooltip, %class%
return
sfufoet reply on 三月 27th, 2008,1:16 下午:
tireless reply on 三月 27th, 2008,2:26 下午:
sfufoet reply on 三月 28th, 2008,11:01 下午:
tireless reply on 三月 31st, 2008,10:35 上午:
sfufoet reply on 三月 31st, 2008,10:38 上午:
sfufoet reply on 三月 28th, 2008,11:01 下午:
用普通的方法不行
Ctrl+v不能用 右键也不能用
D调 reply on 四月 6th, 2008,9:01 上午:
sfufoet reply on 四月 6th, 2008,9:25 上午:
我是一个游戏迷,主要玩,听说可以用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 的文件里面吗?
你是打开了两个魔兽的窗口对吧?
试试下面的代码
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}
}
}
}
sfufoet reply on 五月 3rd, 2008,10:32 上午:
测试了那段代码,是可行的,只不过,激活的窗口会出现,按下一次按钮出现重复的数字,所以我修改了一下,请打开两个记事本测试。
而且代码的~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 reply on 五月 22nd, 2008,1:43 下午:
2,你写的代码里的用户名和密码是指电脑登陆XP系统的用户名和密码吗?
我若是用一台电脑同时多开几个魔兽帐号的话,是不是就不用send 用户名了?
难道是指的魔兽世界的帐号和密码吗?
这个代码我没有测试过,只是写出来给大家参照。这个代码可以用记事本编辑,保存为 ahk 文件就可以了。ahk 放在哪里都没所谓。
这里的用户名和密码当然是魔兽的啦。send 是模拟键盘的命令,发送后面的按键到当前窗口。
建议用自带的录制 ahk 脚本工具,录制登录过程,然后根据需要修改代码。
sfufoet reply on 五月 19th, 2008,12:54 下午:
嘿嘿,问了这么多低级的问题,可别笑话我哦!
点击那个大大的“record”按钮,然后按照你平时登录两个魔兽世界的步骤做。登陆完毕点击左上角的“stop”就可以看到代码了。
sfufoet reply on 五月 19th, 2008,6:08 下午:
sfufoet reply on 五月 19th, 2008,6:09 下午:
等我试过后有问题再问你吧!真是非常感谢.
我上午用你教我的方法把两个帐号的登录过程都录制下来了,可我希望用AHK
把代码复制下来,粘贴到记事本,保存为 ahk 文件。
sfufoet reply on 五月 22nd, 2008,10:01 上午:
测试了那段代码,是可行的,只不过,激活的窗口会出现,按下一次按钮出现重复的数字,所以我修改了一下,请打开两个记事本测试。
而且代码的~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 reply on 五月 22nd, 2008,1:43 下午:
—————-
代码收到。-sfufoet
你要的这个功能我无能为力。sorry。
sfufoet reply on 五月 22nd, 2008,10:15 上午:
李二嫂的猪 reply on 五月 22nd, 2008,10:26 上午:
李二嫂的猪 reply on 五月 22nd, 2008,10:27 上午:
sfufoet reply on 五月 22nd, 2008,10:46 上午:
sfufoet,您好
我也是在网上看到相关的文章介绍,才注意到可以用AHK同时映射两个游戏帐号的,上面所写的代码和NJXN在5月2日所写的帖子上的代码一样,我试了好久也没成功,最近有一朋友介绍我看了<>第16期上也有相同的介绍,我相信用AHK是能做到同时操控多个帐号的,可我就是不知道到底是哪一步没做好,njxn提供的那个代码到底对不对?若没错的话到底应该怎么用?能教教我吗?谢谢拉!实在不行给我指个方向也行啊!
sfufoet reply on 五月 22nd, 2008,1:24 下午:
然后我做了一个文本快抓,就叫复制宝宝吧
我现在抓网文用网博士,不过有时遇到好的名言名句或少量的文本,或者比较乱内容较少的文本时就不想抓到网博士里整理
所以做了这么一个东东只抓文本到一个记事本文件里,以后有空再整理,测试的时候发现不止网页,任何可以复制文本的地方都可以,赚了
源码:
#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/
sfufoet reply on 六月 20th, 2008,10:14 上午:
wildtoy reply on 六月 20th, 2008,12:42 下午:
sfufoet reply on 六月 20th, 2008,2:14 下午:
你提供的两个脚本都下不来
我想研究一下做个闹钟什么的
最好小众先做出来
功能有
1当前时间显示
2定时或延时设置
3提示方法音乐(默认选定)\文字(提示5秒)\启动程序或文件(默认关机)
脚本启动后
1某键暂停/某键继续
2可随时中止热键
3可以设定运行时间
2、用hotkey命令,参考这里
http://www.appinn.com/coy-paste-hotkey/
3、在特定时间运行程序:
用这些自带的变量来获得系统的时间,判断时间,然后运行(run)程序
A_Hour
A_Min
A_Sec
sfufoet reply on 七月 16th, 2008,10:09 下午:
soskitty reply on 八月 19th, 2008,11:18 下午:
a & h::run 目标
如果要三个字母的话,只能用热字符串。
::ahk::run 目标
sfufoet reply on 八月 20th, 2008,9:10 上午: