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编辑过]