当我将应用程序作为 Windoes 服务(即 TServiceApplication)运行时,我在使用 COM 对象时遇到问题。引发异常 EIntfCastError 'Interface not supported'。
如果我将应用程序作为普通的 Delphi 应用程序运行,那么它工作正常,包括如果我使用 srvany.exe 作为服务运行
type IMyInter = interface (IUnknown)
['{9E6B311E-C6D3-4687-B272-3FBE9DBC2DD6}']
//...
end;
type
TMyObject = class
private
FMyInter: IMyInter;
published
constructor Create(const ClassID: TGUID);
end;
constructor TMyObject.Create(const ClassID:TGUID);
begin
CoInitialize(nil);
FMyInter := CreateComObject(ClassID) as IMyInter;
//....
end;
当结果将分配给 FMyInter 时,似乎在调用 CreateComObject 后引发了错误。应用程序和 COM 对象都是 32 位的。我在 Windows 7 64bit 上运行并使用 Delphi XE3。COM 对象已注册到 regsvr32.exe
任何帮助,将不胜感激