描述:
需要调用一个外部DLL对字符串进行加密,可是ASP上VBSCRIPT调用的时候就是刷不出网页,麻烦各位帮忙看看下面的关键代码,指出问题所在。
STDMETHODIMP CEncryptComponent::encrypt(BSTR sourceStr, BSTR *destinStr)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
HMODULE m_hDll = NULL;
char tempStr[16]; //定义一个缓冲区进行字符串的操作
char tempOutStr[64]; //因为SHA算法的加密结果是64位,所以申请64字长做输出缓冲
typedef char* (__stdcall *function)(char* , int , char*); //定义函数指针原型
function RetF;
m_hDll=::LoadLibrary("Encode.dll"); //调用外部加密DLL
if(m_hDll != NULL)
{
RetF=(function)GetProcAddress(m_hDll,"GetSHAStr"); //获得内部的函数
RetF((char*)_bstr_t(sourceStr),1,tempOutStr); //调用内部函数
}
memcpy(tempStr,tempOutStr+24,15); //数据库里只存加密结果从24后开始的15位
tempStr[15] = '\0';
*destinStr = SysAllocString(_bstr_t(tempStr).copy());
FreeLibrary(m_hDll);
return S_OK;
}
解决方案1:
要按F5调试运行IE,并在被调用的方法中设置断点,还有把命令参数设为要打开的网页的地址。
解决方案2: 不知道楼主的程序有没有实现“自动化”
http://www.vckbase.com/document/viewdoc/?id=1506
安全接口实现了吗?
public IDispatchImpl<Ixxxx, &IID_Ixxxx, &LIBID_xxxxxx>
COM_INTERFACE_ENTRY(IObjectSafety)
组件注册了吗?如果没有注册,系统根本不知要调用哪个文件进行
server.createobject("SZ_Encrypt.EncryptComponent")