UWebTest.pas 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. unit UWebTest;
  2. {$WARN SYMBOL_PLATFORM OFF}
  3. interface
  4. uses
  5. Windows, ActiveX, Classes, ComObj, ActiveXObjectTest_TLB, StdVcl;
  6. type
  7. TWebTest = class(TAutoObject, IWebTest, IObjectSafety)
  8. private
  9. FObjectSafetyFlags: DWORD;
  10. public
  11. function SayHello(const Msg: OleVariant): OleVariant; safecall;
  12. {Declare IWebTest methods here}
  13. function GetInterfaceSafetyOptions(const IID: TIID; pdwSupportedOptions,
  14. pdwEnabledOptions: PDWORD): HResult; stdcall;
  15. function SetInterfaceSafetyOptions(const IID: TIID; dwOptionSetMask,
  16. dwEnabledOptions: DWORD): HResult; stdcall;
  17. end;
  18. implementation
  19. uses ComServ;
  20. function TWebTest.GetInterfaceSafetyOptions(const IID: TIID;
  21. pdwSupportedOptions, pdwEnabledOptions: PDWORD): HResult;
  22. var
  23. Unk: IUnknown;
  24. begin
  25. if (pdwSupportedOptions = nil) or (pdwEnabledOptions = nil) then
  26. begin
  27. Result := E_POINTER;
  28. Exit;
  29. end;
  30. Result := QueryInterface(IID, Unk);
  31. if Result = S_OK then
  32. begin
  33. pdwSupportedOptions^ := INTERFACESAFE_FOR_UNTRUSTED_CALLER or
  34. INTERFACESAFE_FOR_UNTRUSTED_DATA;
  35. pdwEnabledOptions^ := FObjectSafetyFlags and
  36. (INTERFACESAFE_FOR_UNTRUSTED_CALLER or INTERFACESAFE_FOR_UNTRUSTED_DATA);
  37. end
  38. else begin
  39. pdwSupportedOptions^ := 0;
  40. pdwEnabledOptions^ := 0;
  41. end;
  42. end;
  43. function TWebTest.SayHello(const Msg: OleVariant): OleVariant;
  44. begin
  45. end;
  46. function TWebTest.SetInterfaceSafetyOptions(const IID: TIID; dwOptionSetMask,
  47. dwEnabledOptions: DWORD): HResult;
  48. var
  49. Unk: IUnknown;
  50. begin
  51. Result := QueryInterface(IID, Unk);
  52. if Result <> S_OK then Exit;
  53. FObjectSafetyFlags := dwEnabledOptions and dwOptionSetMask;
  54. end;
  55. initialization
  56. TTypedComObjectFactory.Create(ComServer, TWebTest, Class_WebTest,
  57. ciMultiInstance, tmApartment);
  58. end.