这里的入门级程序员正在尝试实现COM接口。我正在开发一个与Aloha销售点系统接口的程序。Aloha使用COM来处理外部程序。我正在尝试截取来自mag读卡器的卡数据,这是一个OPOS读卡器,而不是键盘楔子。我的文档没有解释如何实现这个特定的接口,但它确实解释了如何实现类似的接口。我试着遵循这个例子,但是我没有得到任何结果。来自Aloha的支持是不存在的,他们的文档很差,过时,有时甚至是错误的,即使我已经支付了许可证。
我试着做了一个简单的应用程序来测试这个功能。下面是我所做的:
1)使用ATL应用程序向导在vc++ 6.0中创建一个新项目2)服务器类型dll 3)插入新的atl对象->简单对象4)右键单击我的新类并选择实现接口5)浏览类型库,选择Iber.tlb (Aloha的tlb) 6)选择我要实现的接口
这就生成了一个.h、.cpp和.rgs文件。
.h文件包含:
public:
// IInterceptMagcard
STDMETHOD(InterceptMagcard)(BSTR bstrAccountNumber, BSTR bstrCustomerName, BSTR bstrExpirationDate, BSTR bstrTrack1Info, BSTR bstrTrack2Info, BSTR bstrTrack3Info, BSTR bstrRawMagcardData, LONG * bWasDataHandled)
{
if (bWasDataHandled == NULL)
return E_POINTER;
return E_NOTIMPL;
}
那是我实现代码的地方吗?我在其中放了一些测试代码,以便写到一个txt文件中,只是为了测试它。然后我使用:
HRESULT hr = CoCreateInstance(CLSID_AlohaMag, NULL, CLSCTX_INPROC_SERVER,
IID_IAlohaMag, (void **) &g_pIInterceptMagcard);
其中g_pIInterceptMagcard是指向使用上面的向导创建的接口类的指针。
当我尝试注册时,我得到以下HRESULT: 0x80040112,即"class not licensed for use“。
这是否意味着我的程序没有创建必要的注册表项?
发布于 2011-07-06 22:19:41
这可能意味着在他们的自定义类工厂创建类的实例之前,您必须安装许可证。你有没有试过在一个完全正常工作的POS系统上运行你的程序,并授权使用磁卡刷卡?也许你需要一些其他的许可证来做这类事情?
如果是类没有注册的问题,结果将是“类没有注册”。听起来您已经通过向导完成了必要的步骤,以实现接口并使其生成正确的注册表项。
https://stackoverflow.com/questions/6600222
复制相似问题