{"id":477,"date":"2008-05-06T22:10:10","date_gmt":"2008-05-06T22:10:10","guid":{"rendered":"http:\/\/6teen.ru\/?p=719"},"modified":"2008-05-06T22:10:10","modified_gmt":"2008-05-06T22:10:10","slug":"1994","status":"publish","type":"post","link":"http:\/\/pblog.ru\/lab\/?p=477","title":{"rendered":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 TMemoryStream \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 clipboard"},"content":{"rendered":"<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 TMemoryStream \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 clipboard<br \/>\n<!--more--><\/p>\n<pre class=\"alt2\" style=\"margin:0px; padding:6px; border:1px inset; width:580px; height:320px; overflow:auto\"><div>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 TMemoryStream, \u044d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 clipboard\n\n\u0421\u043f\u0435\u0440\u0432\u0430 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f\nclipboard \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 RegisterClipboardFormat():\n\nCF_MYFORMAT := RegisterClipboardFormat('My Format Description');\n\n\u0414\u0430\u043b\u0435\u0435 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u044d\u0442\u0438 \u0448\u0430\u0433\u0438 :\n1. \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a (memory stream) \u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0443\u0434\u0430 \u0434\u0430\u043d\u043d\u044b\u0435.\n2. \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0442\u0443\u0434\u0430.\n3. \u0412\u044b\u0437\u0432\u0430\u0442\u044c Clipboard.SetAsHandle(), \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0431\u0443\u0444\u0435\u0440 \u0432 clipboard.\n\n\u041f\u0440\u0438\u043c\u0435\u0440:\n\nvar\n  hbuf    : THandle;\n  bufptr  : Pointer;\n  mstream : TMemoryStream;\nbegin\n  mstream := TMemoryStream.Create;\n  try\n    {-- Write your data to the stream. --}\n    hbuf := GlobalAlloc(GMEM_MOVEABLE, mstream.size);\n    try\n      bufptr := GlobalLock(hbuf);\n      try\n        Move(mstream.Memory^, bufptr^, mstream.size);\n        Clipboard.SetAsHandle(CF_MYFORMAT, hbuf);\n      finally\n        GlobalUnlock(hbuf);\n      end;\n    except\n      GlobalFree(hbuf);\n      raise;\n    end;\n  finally\n    mstream.Free;\n  end;\nend;\n\n\u0412\u041d\u0418\u041c\u0410\u041d\u0418\u0415: \u041d\u0435 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0439\u0442\u0435 \u0431\u0443\u0444\u0435\u0440, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0441 GlobalAlloc().  \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b\n\u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u0438 \u0435\u0433\u043e \u0432 clipboard, \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0435\u043b\u043e clipboard'\u0430 \u0435\u0433\u043e \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0438\u0442\u044c.\n\u041e\u043f\u044f\u0442\u044c \u0436\u0435, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0431\u0443\u0444\u0435\u0440 \u0438\u0437 clipboard, \u043d\u0435 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0431\u0443\u0444\u0435\u0440  -- \u043f\u0440\u043e\u0441\u0442\u043e\n\u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u043a\u043e\u043f\u0438\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.\n\n\u0414\u043b\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u0430 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0432\u0440\u043e\u0434\u0435 \u044d\u0442\u043e\u0433\u043e:\n\nvar\n  hbuf    : THandle;\n  bufptr  : Pointer;\n  mstream : TMemoryStream;\nbegin\n  hbuf := Clipboard.GetAsHandle(CF_MYFORMAT);\n  if hbuf <> 0 then begin\n    bufptr := GlobalLock(hbuf);\n    if bufptr <> nil then begin\n      try\n        mstream := TMemoryStream.Create;\n        try\n          mstream.WriteBuffer(bufptr^, GlobalSize(hbuf));\n          mstream.Position := 0;\n          {-- Read your data from the stream. --}\n        finally\n          mstream.Free;\n        end;\n      finally\n        GlobalUnlock(hbuf);\n      end;\n    end;\n  end;\nend;\n<\/div><\/pre>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 TMemoryStream \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 clipboard<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[431,454],"tags":[1119,584,1499,1750],"_links":{"self":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/477"}],"collection":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=477"}],"version-history":[{"count":0,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/477\/revisions"}],"wp:attachment":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=477"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=477"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=477"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}