如何安装MathType 6.9

以下安装过程只适用于MathType 6.9,不适用于MathType 7.0及以后版本。
请设法下载mathtype 6.9的英文原版,不要使用流氓公司思杰马克丁的中文试用版,中文试用版通过向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 WhatTheFuck As String
Dim Long1 As LongLong, Long2 As LongLong, Long44 As LongLong
Long44 = 44099087

WhatTheFuck = 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
WhatTheFuck = WhatTheFuck + "00" + CStr(CLng(8999 * Rnd + 1000)) + "-"

Long1 = 0
Long1 = Asc(Mid(WhatTheFuck, 3, 1)) - &H37 + Long1 * &H24
Long1 = Asc(Mid(WhatTheFuck, 4, 1)) - &H37 + Long1 * &H24
Long1 = Asc(Mid(WhatTheFuck, 5, 1)) - &H30 + Long1 * &H24
Long1 = Asc(Mid(WhatTheFuck, 6, 1)) - &H30 + Long1 * &H24
Long1 = Asc(Mid(WhatTheFuck, 7, 1)) - &H30 + Long1 * &H24
Long1 = Long1 Mod Long44

Long2 = 0
Long2 = Asc(Mid(WhatTheFuck, 9, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 10, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 11, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 12, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 13, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 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(CLng(t Mod &H22) + &H57) + temp
Else
temp = Chr(CLng(t Mod &H22) + &H30) + temp
End If
t = CDbl(t) / &H22 - 0.5
Next k

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

上面代码中,t = (Long1 * Long2 Mod Long44) + 1336337,而Long1 * Long2可能超过Long型变量的范围,运行时会报溢出的错误,在64bit的Office中,可通过LongLong型变量(最大2^63-1)来解决。参见VBA Data type summary. 32bit的Office不支持LongLong型变量(所以上面的代码只能在64bit的Office中运行),可以采用先把Long1和Long2除以一个常数后再做乘法的曲折办法来避免溢出。下面的能在32bit的Office上运行的代码中,Long1和Long2除以了divisor( = 8192#)后再做乘法。

Option Explicit
Sub HAHAHAHA()
Dim WhatTheFuck As String
Dim Long1 As Long, Long2 As Long, Long44 As Long
Long44 = 44099087

WhatTheFuck = 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
WhatTheFuck = WhatTheFuck + "00" + CStr(CLng(8999 * Rnd + 1000)) + "-"

Long1 = 0
Long1 = Asc(Mid(WhatTheFuck, 3, 1)) - &H37 + Long1 * &H24
Long1 = Asc(Mid(WhatTheFuck, 4, 1)) - &H37 + Long1 * &H24
Long1 = Asc(Mid(WhatTheFuck, 5, 1)) - &H30 + Long1 * &H24
Long1 = Asc(Mid(WhatTheFuck, 6, 1)) - &H30 + Long1 * &H24
Long1 = Asc(Mid(WhatTheFuck, 7, 1)) - &H30 + Long1 * &H24
Long1 = Long1 Mod Long44

Long2 = 0
Long2 = Asc(Mid(WhatTheFuck, 9, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 10, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 11, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 12, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 13, 1)) - &H30 + Long2 * &H24
Long2 = Asc(Mid(WhatTheFuck, 14, 1)) - &H30 + Long2 * &H24
Long2 = Long2 Mod Long44

Dim t As Long, k As Integer, temp As String, divisor As Double
divisor = 8192#
t = Int((Long1 / divisor) * (Long2 / divisor) / (Long44 / divisor / divisor)) 'Long1 * Long2 / Long44的商
t = Int(((Long1 / divisor) * (Long2 / divisor) - t * (Long44 / divisor / divisor)) * divisor * divisor + 0.1)
'这一步计算Long1 * Long2 Mod Long44(余数),最后加上0.1,是为了弥补浮点计算的误差。比如浮点运算的结果可能
'是X.999,直接使用取整函数Int(X.999)会得到X,而实际上需要的余数是X+1,使用Int(X.999+0.1)就能得到X+1
t = t + 1336337
't = (Long1 * Long2 Mod Long44) + 1336337

temp = ""
For k = 1 To 5
If (t Mod &H22) > 9 Then
temp = Chr(CLng(t Mod &H22) + &H57) + temp
Else
temp = Chr(CLng(t Mod &H22) + &H30) + temp
End If
t = CDbl(t) / &H22 - 0.5
Next k
WhatTheFuck = WhatTheFuck + UCase(temp)
Debug.Print WhatTheFuck
MsgBox prompt:=WhatTheFuck, Buttons:=vbOKOnly, Title:="If unsuccessful, try for more times"
End Sub
发布了45 篇原创文章 · 获赞 98 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/pijianzhirui/article/details/90761188