函数简介:执行用AsmAdd加到缓冲中的指令.
函数原型:
LONGLONG
AsmCall (hwnd,mode)
参数定义:
hwnd
整形数:
窗口句柄
mode 整形数: 模式,取值如下
0 :
在本进程中进行执行,这时hwnd无效. 注: 此模式会创建线程.
1 :
对hwnd指定的进程内执行,注入模式为创建远程线程
2 :必须在对目标窗口进行注入绑定后,才可以用此模式(直接在目标进程创建线程).此模式下的call的执行是排队的,如果同时有多个call在此窗口执行,那么必须排队.所以执行效率不如模式1. 同时此模式受目标窗口刷新速度的影响,目标窗口刷新太慢,也会影响此模式的速度. 注:
此模式会创建线程.
3 :同模式2,但是此模式不会创建线程,而直接在hwnd所在线程执行.
4 :同模式0, 但是此模式不会创建线程,直接在当前调用AsmCall的线程内执行.
返回值:
长整形数:
rax或eax值
示例:
CString
str;
GetDlgItemText(EDIT_ASM_INT, str);
long mode =
StrToInt(str);
CString hw;
LONG64 ret =
QS->AsmCall(g_hwnd,
mode);
hw.Format(">>>AsmCall\r\n%s,%d\r\n返回值:%I64d", str,
mode, ret);
SetLogText(hw);
另要注意的是,AsmAdd里所有的数值都是16进制
必须是顶级窗口句柄