在一个项目中,由于客户端采用了usb密码锁加密,也就是当服务器端返回一个数字串后需要在客户端插上usb key以后才能进行加密,然后将加密的结果传给服务器端进行认证,这就使得传统的压力测试录制脚本变得无效。例如使用工商银行的U盾,就是类似的情况。因此必须在脚本中加入调用客户端加密代码的功能,同时必须插入usb device,测试时候使用的测试工具是QALoad,因此可以直接用vc++来调用加密程序,但是由于加密程序直接调用存在一定的困难,因此使用vb连编写一个类并编译为dll,然后使用vc++再QALoad中进行调用。下面是在QALoad中使用vc++调用vb编写的dll相关的代码:
HRESULT hresult;
CLSID clsid;
hresult=CoInitialize(NULL);
//初始化COM接口
hresult=CLSIDFromProgID(OLESTR("ca.clsCA"), &clsid); //其中clsCA为在dll中定义的类名
_clsCA *t;
hresult=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(_clsCA),(void **) &t);
if(FAILED(hresult))
{
}
char * Field[1];
Field[0]="0.6727308047538793";//这个就是服务器端返回的字串