以下安装过程只适用于MathType 6.9,不适用于MathType 7.0及以后版本。
请设法下载mathtype 6.9的英文原版,不要使用Liu Mang公司思杰马克丁的中文试用版,中文试用版通过向MathType.exe中注入MPlugin.dll以及向Setup.exe中注入SPlugin.dll,从而禁用输入序列号的文本框,让你有序列号也没法输入。In addition,please delete the item located in "HKEY_CURRENT_USER\Software\Install Options" before you (re)install mathtype.
1.选择I accept ……

2.选择Evaluate MathType for 30 days

3.Install
 

4. 完成

5.启动mathtype,Help > Unlock/Register MathType,然后输入你从国外官网购买的MathType序列号就OK了。
 

启动Word、Excel、Powerpoint等任一软件,按下Alt+F11,打开Microsoft Visual Basic for Applications,点击 插入>模块,将下面的代码粘贴进去,然后按F5(某些笔记本电脑可能需要按Fn+F5),或者点击工具栏上的的绿色小三角形,便可以执行VBA代码。

Option Explicit
Sub HAHAHAHA()
Dim HHHH As String
Dim Long1 As LongLong, Long2 As LongLong, Long44 As LongLong
Long44 = 44099087
 
HHHH = Chr(7 * 11) + Chr(2 * 2 * 3 * 7) + Chr(3 * 29) + _
Chr(3 * 23) + Chr(2 * 3 * 3 * 3) + Chr(3 * 19) + _
Chr(2 * 2 * 2 * 2 * 3) + Chr(3 * 3 * 5)
Randomize
HHHH = HHHH + "00" + CStr(CLng(8999 * Rnd + 1000)) + "-"

Long1 = 0
Long1 = Asc(Mid(HHHH, 3, 1)) - &H37 + Long1 * &H24
Long1 = Asc(Mid(HHHH, 4, 1)) - &H37 + Long1 * &H24
Long1 = Asc(Mid(HHHH, 5, 1)) - &H30 + Long1 * &H24
Long1 = Asc(Mid(HHHH, 6, 1)) - &H30 + Long1 * &H24
Long1 = Asc(Mid(HHHH, 7, 1)) - &H30 + Long1 * &H24
Long1 = Long1 Mod Long44
 
Long2 = 0
Long2 = Asc(Mid(HHHH, 9, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(HHHH, 10, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(HHHH, 11, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(HHHH, 12, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(HHHH, 13, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(HHHH, 14, 1)) - &H30 + Long2 * &H24
Long2 = Long2 Mod Long44
 
Dim t As LongLong, k As Integer, temp As String
t = (Long1 * Long2 Mod Long44) + 1336337
 
temp = ""
For k = 1 To 5
    If (t Mod &H22) > 9 Then
        temp = Chr(CInt(t Mod &H22) + &H57) + temp
    Else
        temp = Chr(CInt(t Mod &H22) + &H30) + temp
    End If
    t = Int(t / &H22)
Next k

HHHH = HHHH + UCase(temp)
Debug.Print HHHH
MsgBox prompt:=HHHH, Buttons:=vbOKOnly, Title:="If unsuccessful, try for more times"
End Sub

上面代码中,t = (Long1 * Long2 Mod Long44) + 1336337,而Long1 * Long2可能超过Long型变量(4字节)的范围,运行时会报溢出的错误,在64bit的Office中,可通过LongLong型变量(8字节,最大2^63-1)来解决。参见VBA Data type summary. 32bit的Office不支持LongLong型变量(所以上面的代码只能在64bit的Office中运行),可以用Double类型替代LongLong,代码如下。

Option Explicit
Sub HAHAHAHA()
Dim HHHH As String
Dim D1 As Double, D2 As Double, D44 As Double
D44 = 44099087
 
HHHH = Chr(7 * 11) + Chr(2 * 2 * 3 * 7) + Chr(3 * 29) + _
Chr(3 * 23) + Chr(2 * 3 * 3 * 3) + Chr(3 * 19) + _
Chr(2 * 2 * 2 * 2 * 3) + Chr(3 * 3 * 5)
Randomize
HHHH = HHHH + "00" + CStr(CLng(8999 * Rnd + 1000)) + "-"

D1 = 0
D1 = Asc(Mid(HHHH, 3, 1)) - &H37 + D1 * &H24
D1 = Asc(Mid(HHHH, 4, 1)) - &H37 + D1 * &H24
D1 = Asc(Mid(HHHH, 5, 1)) - &H30 + D1 * &H24
D1 = Asc(Mid(HHHH, 6, 1)) - &H30 + D1 * &H24
D1 = Asc(Mid(HHHH, 7, 1)) - &H30 + D1 * &H24
D1 = D1 Mod D44
 
D2 = 0
D2 = Asc(Mid(HHHH, 9, 1)) - &H30 + D2 * &H24
D2 = Asc(Mid(HHHH, 10, 1)) - &H30 + D2 * &H24
D2 = Asc(Mid(HHHH, 11, 1)) - &H30 + D2 * &H24
D2 = Asc(Mid(HHHH, 12, 1)) - &H30 + D2 * &H24
D2 = Asc(Mid(HHHH, 13, 1)) - &H30 + D2 * &H24
D2 = Asc(Mid(HHHH, 14, 1)) - &H30 + D2 * &H24
D2 = D2 Mod D44
 
Dim D1D2 As Double, t As Double, k As Integer, temp As String
D1D2 = D1 * D2
t = D1D2 - D44 * Int(D1D2 / D44) + 1336337
 
temp = ""
For k = 1 To 5
    If (t Mod &H22) > 9 Then
        temp = Chr(CInt(t Mod &H22) + &H57) + temp
    Else
        temp = Chr(CInt(t Mod &H22) + &H30) + temp
    End If
    t = Int(t / &H22)
Next k

HHHH = HHHH + UCase(temp)
Debug.Print HHHH
MsgBox prompt:=HHHH, Buttons:=vbOKOnly, Title:="If unsuccessful, try for more times"
End Sub

我用javascript也写了一遍,给不熟悉VBA语法的朋友参考。把下面的代码粘贴到记事本中,保存为txt后,再把后缀由txt改为html,然后用浏览器打开。

You can press F5 to generate more codes.<br>
<script> 
    var Long1,Long2,Long44=44099087;
    var HHHH=String.fromCharCode(7 * 11) + String.fromCharCode(2 * 2 * 3 * 7) + 
	     String.fromCharCode(3 * 29) + String.fromCharCode(3 * 23) + 
	     String.fromCharCode(2 * 3 * 3 * 3) + String.fromCharCode(3 * 19) + 
	     String.fromCharCode(2 * 2 * 2 * 2 * 3) + String.fromCharCode(3 * 3 * 5);
    HHHH = HHHH + "00" + Math.floor(8999 * Math.random() + 1000) + "-";
    
    Long1 = 0;
    Long1 = HHHH.substr(2,1).charCodeAt() - 0x37 + Long1 * 0x24;
    Long1 = HHHH.substr(3,1).charCodeAt() - 0x37 + Long1 * 0x24;
    Long1 = HHHH.substr(4,1).charCodeAt() - 0x30 + Long1 * 0x24;
    Long1 = HHHH.substr(5,1).charCodeAt() - 0x30 + Long1 * 0x24;
    Long1 = HHHH.substr(6,1).charCodeAt() - 0x30 + Long1 * 0x24;
    Long1 = Long1 % Long44;
     
    Long2 = 0;
    Long2 = HHHH.substr(8 ,1).charCodeAt() - 0x30 + Long2 * 0x24;
    Long2 = HHHH.substr(9 ,1).charCodeAt() - 0x30 + Long2 * 0x24;
    Long2 = HHHH.substr(10,1).charCodeAt() - 0x30 + Long2 * 0x24;
    Long2 = HHHH.substr(11,1).charCodeAt() - 0x30 + Long2 * 0x24;
    Long2 = HHHH.substr(12,1).charCodeAt() - 0x30 + Long2 * 0x24;
    Long2 = HHHH.substr(13,1).charCodeAt() - 0x30 + Long2 * 0x24;
    Long2 = Long2 % Long44;
    
    var t = (Long1 * Long2) % Long44 + 1336337,k,temp="";
    for(k=1; k<=5; k++) {
        if (t % 0x22 > 9) { temp = String.fromCharCode(t % 0x22 + 0x57) + temp; }
        else              { temp = String.fromCharCode(t % 0x22 + 0x30) + temp; }
        t=Math.floor(t/0x22);
    }
    HHHH = HHHH + temp.toUpperCase();
    document.write(HHHH);
    console.log(HHHH);
</script>

Python再来一遍。

import random
import math

Long44 = 44099087
HHHH = chr(7 * 11) + chr(2 * 2 * 3 * 7) + chr(3 * 29) + chr(3 * 23) + chr(2 * 3 * 3 * 3) + chr(3 * 19) + chr(2 * 2 * 2 * 2 * 3) + chr(3 * 3 * 5)
HHHH = HHHH + "00" + str(random.randint(1000,9999)) + "-"

Long1 = 0
Long1 = ord(HHHH[2]) - 0x37 + Long1 * 0x24
Long1 = ord(HHHH[3]) - 0x37 + Long1 * 0x24
Long1 = ord(HHHH[4]) - 0x30 + Long1 * 0x24
Long1 = ord(HHHH[5]) - 0x30 + Long1 * 0x24
Long1 = ord(HHHH[6]) - 0x30 + Long1 * 0x24
Long1 = Long1 % Long44

Long2 = 0
Long2 = ord(HHHH[8]) - 0x30 + Long2 * 0x24
Long2 = ord(HHHH[9]) - 0x30 + Long2 * 0x24
Long2 = ord(HHHH[10]) - 0x30 + Long2 * 0x24
Long2 = ord(HHHH[11]) - 0x30 + Long2 * 0x24
Long2 = ord(HHHH[12]) - 0x30 + Long2 * 0x24
Long2 = ord(HHHH[13]) - 0x30 + Long2 * 0x24
Long2 = Long2 % Long44

t = (Long1 * Long2) % Long44 + 1336337
temp = ""
for k in range(0,5):
	if t % 0x22 > 9 :
		temp = chr(int(t % 0x22 + 0x57)) + temp
	else:
		temp = chr(int(t % 0x22 + 0x30)) + temp
	t = math.floor(t / 0x22)

HHHH = HHHH + temp.upper()
print(HHHH)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐