|
|
|
|
||
首先新建一个标准 EXE 工程,然后在出现的Form1(窗体)上画上两个TextBox(文本框)控件、两个CommandBtton(按钮)控件。调用“F8 CALL 01”的两个按钮CALL代码如下:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Dim pid As Long
Private Sub Loadpid() 读取目标程序取Pid
Dim hwd As Long
hwd = FindWindow(vbNullString, "F8 CALL 01")
If hwd = 0 Then
MsgBox ("F8 CALL 01 主程序没有运行")
Else
GetWindowThreadProcessId hwd, pid
End If
End Sub
Sub 计算和(a As Long, b As Long) 计算和子函数
Dim asm As New clsASM
Call Loadpid
With asm
.Push a
.Push b
.Push &HA77170
.Mov_EAX &H459924
.Call_EAX
.Ret
End With
asm.Run_ASM pid
End Sub
Private Sub Command1_Click() 调用计算和函数
If (Text1.Text = "") Or (Text2.Text = "") Then
MsgBox ("输入数值")
Else
Call 计算和(Text1.Text, Text2.Text)
End If
End Sub
Sub 计算积(a As Long, b As Long) 计算积子函数
Dim asm As New clsASM
Call Loadpid
With asm
.Push a
.Push b
.Push &HA77170
.Mov_EAX &H459A78
.Call_EAX
.Ret
End With
asm.Run_ASM pid
End Sub
Private Sub Command2_Click() 调用计算积函数
If (Text1.Text = "") Or (Text2.Text = "") Then
MsgBox ("输入数值")
Else
Call 计算积(Text1.Text, Text2.Text)
End If
End Sub
运行程序如图所示: