CopyScreen.pas 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. unit CopyScreen;
  2. {$WARN SYMBOL_PLATFORM OFF}
  3. interface
  4. uses
  5. Windows, ActiveX, Classes, ComObj, Graphics, Shdocvw, Registry, IETools_TLB,
  6. StdVcl, CopyScreenFrm, Unit1, Forms, Controls, SysUtils, IdMultipartFormData,
  7. IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
  8. type
  9. TCopyScreen = class(TAutoObject, ICopyScreen, IObjectSafety)
  10. private
  11. FObjectSafetyFlags: DWORD;
  12. protected
  13. function Get_FileName: OleVariant; safecall;
  14. procedure Start; safecall;
  15. function GetInterfaceSafetyOptions(const IID: TIID; pdwSupportedOptions,
  16. pdwEnabledOptions: PDWORD): HResult; stdcall;
  17. function SetInterfaceSafetyOptions(const IID: TIID; dwOptionSetMask,
  18. dwEnabledOptions: DWORD): HResult; stdcall;
  19. procedure Upload(URL: OleVariant); safecall;
  20. end;
  21. implementation
  22. uses ComServ;
  23. //------------------------------------------------------------------------------
  24. function TCopyScreen.GetInterfaceSafetyOptions(const IID: TIID;
  25. pdwSupportedOptions, pdwEnabledOptions: PDWORD): HResult;
  26. var
  27. Unk: IUnknown;
  28. begin
  29. if (pdwSupportedOptions = nil) or (pdwEnabledOptions = nil) then
  30. begin
  31. Result := E_POINTER;
  32. Exit;
  33. end;
  34. Result := QueryInterface(IID, Unk);
  35. if Result = S_OK then
  36. begin
  37. pdwSupportedOptions^ := INTERFACESAFE_FOR_UNTRUSTED_CALLER or
  38. INTERFACESAFE_FOR_UNTRUSTED_DATA;
  39. pdwEnabledOptions^ := FObjectSafetyFlags and
  40. (INTERFACESAFE_FOR_UNTRUSTED_CALLER or INTERFACESAFE_FOR_UNTRUSTED_DATA);
  41. end
  42. else begin
  43. pdwSupportedOptions^ := 0;
  44. pdwEnabledOptions^ := 0;
  45. end;
  46. end;
  47. //------------------------------------------------------------------------------
  48. function TCopyScreen.SetInterfaceSafetyOptions(const IID: TIID;
  49. dwOptionSetMask, dwEnabledOptions: DWORD): HResult;
  50. var
  51. Unk: IUnknown;
  52. begin
  53. Result := QueryInterface(IID, Unk);
  54. if Result <> S_OK then Exit;
  55. FObjectSafetyFlags := dwEnabledOptions and dwOptionSetMask;
  56. end;
  57. function TCopyScreen.Get_FileName: OleVariant;
  58. begin
  59. Result := ExtractFileName(ScreenFileName);
  60. end;
  61. procedure TCopyScreen.Start;
  62. begin
  63. Form1 := TForm1.Create(nil);
  64. Form1.Show;
  65. while Form1 <> nil do
  66. begin
  67. Application.ProcessMessages;
  68. Sleep(10);
  69. end;
  70. end;
  71. procedure TCopyScreen.Upload(URL: OleVariant);
  72. var
  73. IdHTTP: TIdHTTP;
  74. mp: TIdMultiPartFormDataStream ;
  75. begin
  76. URL := 'http://220.191.211.21/WebScreenCut/recv.asp';
  77. mp:= TIdMultiPartFormDataStream.Create ;
  78. mp.AddFile('UpFile', ScreenFileName, 'multipart/form-data');
  79. IdHTTP := TIdHTTP.Create(nil);
  80. try
  81. try
  82. IdHTTP.Post(URL, mp);
  83. //MessageBox(0, PChar(IdHTTP.Response.ResponseText), '', MB_OK);
  84. except
  85. on E: Exception do
  86. begin
  87. MessageBox(0, PChar('´«ÉÏʧ°Ü£º' + E.Message), '', MB_OK);
  88. end;
  89. end
  90. finally
  91. IdHTTP.Free;
  92. mp.Free;
  93. end;
  94. end;
  95. initialization
  96. TAutoObjectFactory.Create(ComServer, TCopyScreen, Class_CopyScreen,
  97. ciMultiInstance, tmApartment);
  98. end.