今天实发奇想,能不能让脚本支持系统API函数的调用呢?呵呵,大家都知道脚本可以调用COM,那就写一个能动态调用API的COM吧。主要是实现IDispatch接口时改一改实现的方法,很有意思,代码如下:
#pragma once
#include "stdafx.h"
class ApiCaller : public IDispatch
{
private:
LONG m_nRef;
HMODULE m_hDLL;
public:
ApiCaller(HMODULE hDll)
{
m_hDLL = hDll;
m_nRef = 0;
}
virtual ~ApiCaller(void)
{
FreeLibrary(m_hDLL);
}
void GetParamList(int *pList, DISPPARAMS* pObj)
{
bool bByRef = 0;
VARIANT *pv = 0;
for(int i=0; i<pObj->cArgs; i++)
{
bByRef = FALSE;
pv = &pObj->rgvarg[i];
while( pv->vt == (VT_VARIANT|VT_BYREF) )
{
bByRef = TRUE;
pv = pv->pvarVal;
}
if( pv->vt & VT_BSTR )
{
pList[i] = (int)pv->bstrVal;
}
else
{
VariantChangeType(pv,pv,0,VT_I4);
if( bByRef )
pList[i] &#