Autohotkey 自动热键-字母循环

Autohotkey 自动热键-字母循环,autohotkey,modulo,Autohotkey,Modulo,我是一名数学学生,我知道模运算,这可能会有所帮助 我想在Autohotkey(或autoit)中编码,单击键我想运行一系列键入命令,例如: aaaaaaaa进入 aaaaaabenter aaaabaenter 等等 我想把这些信一路循环到 zzzzzz输入 我想生成由Enter分隔的字母a-z的所有12个长度排列 我会尽我所能完成工作,任何提示都将不胜感激。两周前也有人问过同样的问题: 但我很乐意再次回答: (点击上面的链接,看一个没有评论的例子,这里很乱) BruteForce(字符、最小

我是一名数学学生,我知道模运算,这可能会有所帮助

我想在Autohotkey(或autoit)中编码,单击键我想运行一系列键入命令,例如:

aaaaaaaa进入

aaaaaabenter

aaaabaenter

等等

我想把这些信一路循环到

zzzzzz输入

我想生成由Enter分隔的字母
a-z
的所有12个长度排列


我会尽我所能完成工作,任何提示都将不胜感激。

两周前也有人问过同样的问题: 但我很乐意再次回答:
(点击上面的链接,看一个没有评论的例子,这里很乱)

BruteForce(字符、最小值、最大值、前缀=“”、阶段:=0){;函数头
循环,解析,Chars;我们循环传递给这个函数的字符串
{
If(Stage>=Min-1){;在第二个If块中解释
;前缀:我们最后生成的字符串(在第一次迭代时aaaaaaaaaa11)
;A_LoopField:包含我们正在循环的“Chars”字符串的当前字符
;“{Enter}”:告诉SendInput在前缀和当前字符后发送Enter
SendInput%前缀A_循环字段“{Enter}”;aaaaaaaaa{Enter}
}
如果(阶段=Min-1(我们传递了12表示Min)为真
;我们将在上面的if块中输出字符串+当前字符(A)
;则第二个if语句将失败
;当前函数调用的循环将进入第二次迭代
;并再次输出11 As和第二个字符(B)
;etc等,直到循环结束,然后最后一个函数调用结束,它将转到之前的函数调用。。。
;正如我所说的……真的很难解释。要理解它,最好像执行代码一样简单地检查代码,也许记下每次迭代中发生的事情
蛮力(字符、最小值、最大值、前缀A_环域、阶段+1)
}
}
}
F1::;热键是F1
暴力力量(“abcdefghijklmnopqrstuvxyz”,12,12);这将发送可能的大写字母组合(最小长度12,最大长度12)
;可以根据需要更改最小长度和最大长度以及字符串
返回
这里有一种不同的方法,如果最小长度和最大长度不相同,它将提供更有序的输出:

Generate(prefix, len, chars) {
    If (StrLen(prefix) = len)
        SendInput % prefix " "
    If (StrLen(prefix) < len)
        Loop, Parse, chars
            Generate(prefix A_LoopField, len, chars) 
}

BruteForce(chars, minLen, maxLen) {
    curLen := minLen
    Loop % maxLen-minLen+1 {
        Generate("", curLen, chars)
        curLen++
    }
}

F1::
   BruteForce("abc", 2, 3)
Return
Generate(前缀、len、chars){
If(StrLen(前缀)=len)
SendInput%前缀“”
If(StrLen(前缀)

输出将是:
aaab ac ba bb bc ca cb cc aab aac aba abb abc acb acb acb bab bac bba bbb bbb bbc bcc caa cab cac cba cbb cbc cca ccb ccc

你知道12到8次方是4.3亿,对吗?你想对密码对话框进行暴力攻击吗?你怎么会认为模会有帮助?@Katie So,情况更糟。如果你每毫秒产生一个排列,那么26^12将花费你300万年的时间。祝你好运@Katie那么我不明白为什么你要生成26^12排列,如果你知道这是不可能的。@Katie好吧,“API”意味着有一个编程接口,所以如果这是真的,这可能是可能的,但我无法预测这会有多困难。如果它没有接口,那么您必须进行某种代码注入,这涉及到大量逆向工程,需要高级asm知识。这是非常困难的。。您可能最擅长使用AHK的ControlSetText、ControlSend,甚至可能使用ControlClick或带有“BM_CLICK”的SendMessage。
Generate(prefix, len, chars) {
    If (StrLen(prefix) = len)
        SendInput % prefix " "
    If (StrLen(prefix) < len)
        Loop, Parse, chars
            Generate(prefix A_LoopField, len, chars) 
}

BruteForce(chars, minLen, maxLen) {
    curLen := minLen
    Loop % maxLen-minLen+1 {
        Generate("", curLen, chars)
        curLen++
    }
}

F1::
   BruteForce("abc", 2, 3)
Return