国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

剪貼板的流存儲

2019-11-18 18:24:33
字體:
來源:轉載
供稿:網友
(*//標題:剪貼板的流存儲說明:如果你想借用剪貼板,有這套函數就方便了設計:Zswang日期:2003-11-14支持:wjhu111@21cn.com//*)
///////Begin Sourceuses Clipbrd;
type  TDataIdnet = array[0..2] of Char;  TClipboardFileHead = packed record    rIdent: TDataIdnet;    rCount: Word;  end;
  TClipboardFileItem = packed record    rFormat: Word;    rSize: Longword;    rData: Pointer;  end;
const rDataIdnet: TDataIdnet = 'cbf';
function ClipboardSaveToStream(mStream: TStream): Boolean;var  vClipboardFileHead: TClipboardFileHead;  vClipboardFileItem: TClipboardFileItem;  I: Integer;  vData: THandle;begin  Result := False;  if not Assigned(mStream) then Exit;  vClipboardFileHead.rIdent := rDataIdnet;  vClipboardFileHead.rCount := Clipboard.FormatCount;  mStream.Write(vClipboardFileHead, SizeOf(vClipboardFileHead));  try    Clipboard.Open;    for I := 0 to Clipboard.FormatCount - 1 do begin      vData := GetClipboardData(Clipboard.Formats[I]);      vClipboardFileItem.rFormat := Clipboard.Formats[I];      vClipboardFileItem.rSize := GlobalSize(vData);      vClipboardFileItem.rData := GlobalLock(vData);      try        mStream.Write(vClipboardFileItem, SizeOf(vClipboardFileItem) -          SizeOf(vClipboardFileItem.rData));        mStream.Write(vClipboardFileItem.rData^, vClipboardFileItem.rSize);      finally        GlobalUnlock(vData);      end;    end;  finally    Clipboard.Close;  end;  Result := True;end; { ClipboardSaveToStream }
function ClipboardLoadFromStream(mStream: TStream): Boolean;var  vClipboardFileHead: TClipboardFileHead;  vClipboardFileItem: TClipboardFileItem;  I: Integer;  vData: THandle;begin  Result := False;  if not Assigned(mStream) then Exit;  if mStream.Size <= SizeOf(vClipboardFileHead) then Exit;  mStream.Read(vClipboardFileHead, SizeOf(vClipboardFileHead));  if vClipboardFileHead.rIdent <> rDataIdnet then Exit;  Clipboard.Clear;  Clipboard.Open;  try    for I := 0 to vClipboardFileHead.rCount - 1 do begin      mStream.Read(vClipboardFileItem, SizeOf(vClipboardFileItem) -        SizeOf(vClipboardFileItem.rData));      vData := GlobalAlloc(GMEM_MOVEABLE + GMEM_DDESHARE,        vClipboardFileItem.rSize);      try        vClipboardFileItem.rData := GlobalLock(vData);        try          mStream.Read(vClipboardFileItem.rData^, vClipboardFileItem.rSize);          SetClipboardData(vClipboardFileItem.rFormat, vData);        finally          GlobalUnlock(vData);        end;      finally        GlobalFree(vData);      end;    end;  finally    Clipboard.Close;  end;  Result := True;end; { ClipboardLoadFromStream }///////End Source
///////Begin DemoPRocedure TFormClipboard.ButtonSaveClick(Sender: TObject);var  vMemoryStream: TMemoryStream;begin  if not SaveDialog1.Execute then Exit;  if FileExists(SaveDialog1.FileName) and    (MessageDlg(Format('是否覆蓋文件 "%s"?', [SaveDialog1.FileName]),    mtWarning, [mbYes, mbNo], 0) <> mrYes) then Exit;  vMemoryStream := TMemoryStream.Create;  try    ClipboardSaveToStream(vMemoryStream);    vMemoryStream.SaveToFile(SaveDialog1.FileName);  finally    vMemoryStream.Free;  end;end;
procedure TFormClipboard.ButtonLoadClick(Sender: TObject);var  vMemoryStream: TMemoryStream;begin  if not OpenDialog1.Execute then Exit;  if not FileExists(OpenDialog1.FileName) then Exit;  vMemoryStream := TMemoryStream.Create;  try    vMemoryStream.LoadFromFile(OpenDialog1.FileName);    ClipboardLoadFromStream(vMemoryStream);  finally    vMemoryStream.Free;  end;end;///////End Demo

上一篇:獲取其他進程中ListView的文本

下一篇:流的壓縮和解壓

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 洛扎县| 青田县| 原阳县| 泽库县| 清水河县| 怀安县| 古浪县| 南澳县| 英超| 高青县| 兰西县| 永春县| 正镶白旗| 墨竹工卡县| 前郭尔| 五原县| 增城市| 城步| 曲沃县| 梧州市| 政和县| 山阴县| 普宁市| 周至县| 尼勒克县| 余江县| 余干县| 东莞市| 仪征市| 崇礼县| 高安市| 雷波县| 庆元县| 定日县| 滦平县| 青海省| 潼南县| 汽车| 海晏县| 合水县| 昌黎县|