byte sCode[] = {
0x8B, //MOV EDI,EDI //(主要起到内存对齐的作用,网上查的,不知是否有用,就保存了)
0xFF,0x55,//PUSH EBP
0x8B,0xEC,//MOV EBP,ESP
0x53,//PUSH EBX
0x51,//PUSH ECX
0x52,//PUSH EDX
0xFF,0x75,0x30,//PUSH DWORD PTR [EBP + 0x30]
0xFF,0x75,0x2C,//PUSH DWORD PTR [EBP + 0x2C]
0xFF,0x75,0x28,
0xFF,0x75,0x24,
0xFF,0x75,0x20,
0xFF,0x75,0x2C,
0xFF,0x75,0x28,
0xFF,0x75,0x24,
0xFF,0x75,0x20,
0xFF,0x75,0x1C,
0xFF,0x75,0x18,
0xFF,0x75,0x14,
0xFF,0x75,0x10,
0xFF,0x75,0x0C,
0xFF,0x75,0x08, //PUSH DWORD PTR [EBP + 0x08]
0x68,0x00,0x00,0x00,0x00,//cmd_dz
PUSH vfpcmd
0x68,0x00,0x00,0x00,0x00,//nums
PUSH nums //参数个数
0x68,0x00,0x00,0x00,0x00,//vfp_dz
PUSH vfpcom句柄
0xB8,0x00,0x00,0x00,0x00,//my_fun_dz mov eax my_vfp_func
0xFF,0xD0, //call eax
0x5A, //POP EDX
0x59, //POP ECX
0x5B, //POP EBX
0x8B,0xE5,//MOV ESP, EBP
0x5D,//POP EBP
0xC3,//RET
0x00,0x00
};
基础代码就是在原来行者的基础上做些修改,可以最多接受15个参数,在一般应用上面是没有问题的。
后来,我又单独直接在c++的环境里测试了这里的代码,也是有报错的情况,只是没有把程序卡坏,可以不断运行。
https://learn.,下来我再单独在独立的线程里再试一下,是不是需要独立的线程。
因为这个回调函数是会不断被调用的,某种程度上会阻塞当前线程的,如果在VFP的主线程中调用的话,也是自找麻烦了。麻烦版主帮看看。
[此贴子已经被作者于2024-6-20 12:37编辑过]