#include "stdio.h"
#include "windows.h"
void *r;
int _tmain(int argc, _TCHAR* argv[])
{
HMODULE hm = ::LoadLibrary("VerifyCode.dll");
DWORD faddr1, faddr2, faddr3;
char *p = "c:\\1.jpg";
r = (void *)malloc(16);
memset(r, 0, 16);
faddr1 = (DWORD)::GetProcAddress(hm, "InitVerifyCodePick");
faddr2 = (DWORD)::GetProcAddress(hm, "GetVerifyCode");
faddr3 = (DWORD)::GetProcAddress(hm, "UnInitVerifyCodePick");
_asm
{
call faddr1
push r
push p
call faddr2
call faddr3
}
MessageBox(NULL, (char *)r, "o", MB_OK);
CloseHandle(hm);
return 0;
}

解决方案 »

  1.   

    我对VB不熟   
    我的一个朋友他要调用这个DLL里的三个函数叫我帮忙  我就写了这些代码
    只有GetVerifyCode是有参数的
    第一个参数是一个字符数组(在C里就是一个指针,在VB里就不知道了)
    第二个参数是用来返回结果(在C里就是一个指针,在VB里就不知道了)不知道怎么正确的给它传参数
      

  2.   


    Option ExplicitPrivate Declare Sub InitVerifyCodePick Lib "VerifyCode.dll" ()
    Private Declare Sub GetVerifyCode Lib "VerifyCode.dll" (ByVal lpszBuffer As Long, ByVal lpszImagePath As Long)
    Private Declare Sub UnInitVerifyCodePick Lib "VerifyCode.dll" ()
    Sub main()
        Dim strPath     As String
        Dim buff()      As Byte
        Dim lpData()    As Byte
        
        strPath = "c:\1.jpg" & Chr(0)
        lpData = StrConv(strPath, vbFromUnicode)
        ReDim buff(1024)
        
        InitVerifyCodePick
        GetVerifyCode VarPtr(lpData(0)), VarPtr(buff(0)) 
        UnInitVerifyCodePick
        
        MsgBox StrConv(buff, vbUnicode)
     
    End Sub没钱拿点分也好