Initial
This commit is contained in:
335
boneyard/Main.cpp
Normal file
335
boneyard/Main.cpp
Normal file
@@ -0,0 +1,335 @@
|
||||
#define _COMMON_USENLS_
|
||||
#include <common/windows.hpp>
|
||||
#include <common/block.hpp>
|
||||
#include <common/openfile.hpp>
|
||||
#include <common/console.hpp>
|
||||
#include <common/block.hpp>
|
||||
#include <com/com.hpp>
|
||||
|
||||
#include <olectl.h>
|
||||
#include <com/objbase.hpp>
|
||||
#include <com/oleauto.hpp>
|
||||
#include <com/com.hpp>
|
||||
#include <com/variant.hpp>
|
||||
|
||||
#include <boneyard/dimg.h>
|
||||
|
||||
|
||||
class FunctionDescription : private FUNCDESC
|
||||
{
|
||||
public:
|
||||
FunctionDescription(void);
|
||||
FunctionDescription(const FunctionDescription &someFunctionDescription);
|
||||
FunctionDescription(const FUNCDESC &someFUNCDESC);
|
||||
virtual ~FunctionDescription();
|
||||
FunctionDescription &operator=(const FunctionDescription &someFunctionDescription);
|
||||
FunctionDescription &operator=(const FUNCDESC &someFUNCDESC);
|
||||
MEMBERID memberID(void)const;
|
||||
void memberID(MEMBERID memberID);
|
||||
SCODE *ptrSCode(void)const;
|
||||
void ptrSCode(SCODE *ptrSCode);
|
||||
ELEMDESC *ptrELEMDESC(void)const;
|
||||
void ptrELEMDESC(ELEMDESC *ptrELEMDESC);
|
||||
FUNCKIND funcKind(void)const;
|
||||
void funcKind(FUNCKIND funcKind);
|
||||
INVOKEKIND invocation(void)const;
|
||||
void invocation(INVOKEKIND invocation);
|
||||
CALLCONV convention(void)const;
|
||||
void convention(CALLCONV convention);
|
||||
short parameters(void)const;
|
||||
void parameters(short parameters);
|
||||
short optionalParameters(void)const;
|
||||
void optionalParameters(short optionalParameters);
|
||||
short vtableOffset(void)const;
|
||||
void vtableOffset(short vtableOffset);
|
||||
short countSCodes(void)const;
|
||||
void countSCodes(short countSCodes);
|
||||
ELEMDESC returnType(void)const;
|
||||
void returnType(ELEMDESC returnType);
|
||||
WORD funcFlags(void)const;
|
||||
void funcFlags(WORD funcFlags);
|
||||
FUNCDESC &getFUNCDESC(void);
|
||||
private:
|
||||
void zeroInit(void);
|
||||
};
|
||||
|
||||
inline
|
||||
FunctionDescription::FunctionDescription(void)
|
||||
{
|
||||
zeroInit();
|
||||
}
|
||||
|
||||
inline
|
||||
FunctionDescription::FunctionDescription(const FunctionDescription &someFunctionDescription)
|
||||
{
|
||||
*this=someFunctionDescription;
|
||||
}
|
||||
|
||||
inline
|
||||
FunctionDescription::FunctionDescription(const FUNCDESC &someFUNCDESC)
|
||||
{
|
||||
*this=someFUNCDESC;
|
||||
}
|
||||
|
||||
inline
|
||||
FunctionDescription::~FunctionDescription()
|
||||
{
|
||||
}
|
||||
|
||||
inline
|
||||
FunctionDescription &FunctionDescription::operator=(const FunctionDescription &someFunctionDescription)
|
||||
{
|
||||
memberID(someFunctionDescription.memberID());
|
||||
ptrSCode(someFunctionDescription.ptrSCode());
|
||||
ptrELEMDESC(someFunctionDescription.ptrELEMDESC());
|
||||
funcKind(someFunctionDescription.funcKind());
|
||||
invocation(someFunctionDescription.invocation());
|
||||
convention(someFunctionDescription.convention());
|
||||
parameters(someFunctionDescription.parameters());
|
||||
optionalParameters(someFunctionDescription.optionalParameters());
|
||||
vtableOffset(someFunctionDescription.vtableOffset());
|
||||
countSCodes(someFunctionDescription.countSCodes());
|
||||
returnType(someFunctionDescription.returnType());
|
||||
funcFlags(someFunctionDescription.funcFlags());
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
FunctionDescription &FunctionDescription::operator=(const FUNCDESC &someFUNCDESC)
|
||||
{
|
||||
FUNCDESC::memid=someFUNCDESC.memid;
|
||||
FUNCDESC::lprgscode=someFUNCDESC.lprgscode;
|
||||
FUNCDESC::lprgelemdescParam=someFUNCDESC.lprgelemdescParam;
|
||||
FUNCDESC::funckind=someFUNCDESC.funckind;
|
||||
FUNCDESC::invkind=someFUNCDESC.invkind;
|
||||
FUNCDESC::callconv=someFUNCDESC.callconv;
|
||||
FUNCDESC::cParams=someFUNCDESC.cParams;
|
||||
FUNCDESC::cParamsOpt=someFUNCDESC.cParamsOpt;
|
||||
FUNCDESC::oVft=someFUNCDESC.oVft;
|
||||
FUNCDESC::cScodes=someFUNCDESC.cScodes;
|
||||
FUNCDESC::elemdescFunc=someFUNCDESC.elemdescFunc;
|
||||
FUNCDESC::wFuncFlags=someFUNCDESC.wFuncFlags;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
MEMBERID FunctionDescription::memberID(void)const
|
||||
{
|
||||
return FUNCDESC::memid;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::memberID(MEMBERID memberID)
|
||||
{
|
||||
FUNCDESC::memid=memberID;
|
||||
}
|
||||
|
||||
inline
|
||||
SCODE *FunctionDescription::ptrSCode(void)const
|
||||
{
|
||||
return FUNCDESC::lprgscode;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::ptrSCode(SCODE *pSCode)
|
||||
{
|
||||
FUNCDESC::lprgscode=pSCode;
|
||||
}
|
||||
|
||||
inline
|
||||
ELEMDESC *FunctionDescription::ptrELEMDESC(void)const
|
||||
{
|
||||
return FUNCDESC::lprgelemdescParam;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::ptrELEMDESC(ELEMDESC *ptrELEMDESC)
|
||||
{
|
||||
FUNCDESC::lprgelemdescParam=ptrELEMDESC;
|
||||
}
|
||||
|
||||
inline
|
||||
FUNCKIND FunctionDescription::funcKind(void)const
|
||||
{
|
||||
return FUNCDESC::funckind;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::funcKind(FUNCKIND funcKind)
|
||||
{
|
||||
FUNCDESC::funckind=funcKind;
|
||||
}
|
||||
|
||||
inline
|
||||
INVOKEKIND FunctionDescription::invocation(void)const
|
||||
{
|
||||
return FUNCDESC::invkind;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::invocation(INVOKEKIND invocation)
|
||||
{
|
||||
FUNCDESC::invkind=invocation;
|
||||
}
|
||||
|
||||
inline
|
||||
CALLCONV FunctionDescription::convention(void)const
|
||||
{
|
||||
return FUNCDESC::callconv;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::convention(CALLCONV convention)
|
||||
{
|
||||
FUNCDESC::callconv=convention;
|
||||
}
|
||||
|
||||
inline
|
||||
short FunctionDescription::parameters(void)const
|
||||
{
|
||||
return FUNCDESC::cParams;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::parameters(short parameters)
|
||||
{
|
||||
FUNCDESC::cParams=parameters;
|
||||
}
|
||||
|
||||
inline
|
||||
short FunctionDescription::optionalParameters(void)const
|
||||
{
|
||||
return FUNCDESC::cParamsOpt;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::optionalParameters(short optionalParameters)
|
||||
{
|
||||
FUNCDESC::cParamsOpt=optionalParameters;
|
||||
}
|
||||
|
||||
inline
|
||||
short FunctionDescription::vtableOffset(void)const
|
||||
{
|
||||
return FUNCDESC::oVft;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::vtableOffset(short vtableOffset)
|
||||
{
|
||||
FUNCDESC::oVft=vtableOffset;
|
||||
}
|
||||
|
||||
inline
|
||||
short FunctionDescription::countSCodes(void)const
|
||||
{
|
||||
return FUNCDESC::cScodes;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::countSCodes(short countSCodes)
|
||||
{
|
||||
FUNCDESC::cScodes=countSCodes;
|
||||
}
|
||||
|
||||
inline
|
||||
ELEMDESC FunctionDescription::returnType(void)const
|
||||
{
|
||||
return FUNCDESC::elemdescFunc;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::returnType(ELEMDESC returnType)
|
||||
{
|
||||
FUNCDESC::elemdescFunc=returnType;
|
||||
}
|
||||
|
||||
inline
|
||||
WORD FunctionDescription::funcFlags(void)const
|
||||
{
|
||||
return FUNCDESC::wFuncFlags;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::funcFlags(WORD funcFlags)
|
||||
{
|
||||
FUNCDESC::wFuncFlags=funcFlags;
|
||||
}
|
||||
|
||||
inline
|
||||
FUNCDESC &FunctionDescription::getFUNCDESC(void)
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline
|
||||
void FunctionDescription::zeroInit(void)
|
||||
{
|
||||
::memset(&getFUNCDESC(),0,sizeof(FUNCDESC));
|
||||
}
|
||||
|
||||
|
||||
int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/)
|
||||
{
|
||||
FunctionDescription fundDesc;
|
||||
Block<String> strMethodNames;
|
||||
SmartPointer<IUnknown> ppInterface;
|
||||
ITypeInfo *pTypeInfo;
|
||||
_DImgScan *pImageScanner;
|
||||
ComResult comResult;
|
||||
HRESULT result;
|
||||
EXCEPINFO excpInfo;
|
||||
|
||||
ComObj comObj;
|
||||
comObj.createInstance(CLSID_ImgScan,DIID__DImgScan,ppInterface,InprocServer);
|
||||
pImageScanner=(_DImgScan*)(IUnknown*)ppInterface;
|
||||
|
||||
UINT count(0);
|
||||
pImageScanner->GetTypeInfoCount(&count);
|
||||
comResult=pImageScanner->GetTypeInfo(0,::GetUserDefaultLCID(),&pTypeInfo);
|
||||
if(!comResult.success()){pImageScanner->Release();return 0;}
|
||||
|
||||
BSTR bstrName;
|
||||
BSTR bstrDocString;
|
||||
unsigned long helpContext;
|
||||
BSTR bstrHelpFile;
|
||||
|
||||
int index=1;
|
||||
while(true)
|
||||
{
|
||||
comResult=pTypeInfo->GetDocumentation(index++,&bstrName,&bstrDocString,&helpContext,&bstrHelpFile);
|
||||
if(!comResult.success())break;
|
||||
String strAnsiName(BString(bstrName).toString());
|
||||
String strAnsiDocString(BString(bstrDocString).toString());
|
||||
String strHelpFile(BString(bstrHelpFile).toString());
|
||||
strMethodNames.insert(&strAnsiName);
|
||||
::OutputDebugString(strAnsiName+String(";")+strAnsiDocString+String(";")+strHelpFile+String(";")+String("\n"));
|
||||
}
|
||||
|
||||
Variant varResult;
|
||||
unsigned int argErrorIndex;
|
||||
comResult=pImageScanner->Invoke(0x64,IID_NULL,::GetUserDefaultLCID(),DISPATCH_METHOD,0,&varResult.getVARIANT(),&excpInfo,&argErrorIndex);
|
||||
if(!comResult.success())
|
||||
{
|
||||
result=comResult.error();
|
||||
pTypeInfo->Release();
|
||||
pImageScanner->Release();
|
||||
return 0;
|
||||
}
|
||||
|
||||
comResult=pImageScanner->Invoke(0x67,IID_NULL,::GetUserDefaultLCID(),DISPATCH_METHOD,0,&varResult.getVARIANT(),0,&argErrorIndex);
|
||||
if(!comResult.success())
|
||||
{
|
||||
result=comResult.error();
|
||||
pTypeInfo->Release();
|
||||
pImageScanner->Release();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
pTypeInfo->Release();
|
||||
pImageScanner->Release();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user