アプリケーションを TServiceApplication などの Windows サービスとして実行するときに、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 64 ビットで実行しており、Delphi XE3 を使用しています。COM オブジェクトは regsvr32.exe に登録されています
どんな助けでもいただければ幸いです