这个问题我自己解决了,方法如下:Procedure CopyStreamToClipboard( fmt: Cardinal; S: TStream ); Var hMem: THandle; pMem: Pointer; Begin S.Position := 0; hMem := GlobalAlloc( GHND or GMEM_DDESHARE, S.Size ); If hMem <> 0 Then Begin pMem := GlobalLock( hMem ); If pMem <> Nil Then Begin S.Read( pMem^, S.Size ); S.Position := 0; GlobalUnlock( hMem ); Clipboard.Open; try Clipboard.SetAsHandle( fmt, hMem ); finally Clipboard.Close; end; End { If } Else Begin GlobalFree( hMem ); OutOfMemoryError; End; End { If } Else OutOfMemoryError; End; { CopyStreamToClipboard }
Procedure CopyStreamFromClipboard( fmt: Cardinal; S: TStream ); Var hMem: THandle; pMem: Pointer; Begin hMem := Clipboard.GetAsHandle( fmt ); If hMem <> 0 Then Begin pMem := GlobalLock( hMem ); If pMem <> Nil Then Begin S.Write( pMem^, GlobalSize( hMem )); S.Position := 0; GlobalUnlock( hMem ); End { If } Else raise Exception.Create( 'CopyStreamFromClipboard: could not lock global handle '+ 'obtained from clipboard!'); End; { If } End; { CopyStreamFromClipboard } ////////////////////////////////////////////////////// 谢谢大家关心!
Var
hMem: THandle;
pMem: Pointer;
Begin
S.Position := 0;
hMem := GlobalAlloc( GHND or GMEM_DDESHARE, S.Size );
If hMem <> 0 Then Begin
pMem := GlobalLock( hMem );
If pMem <> Nil Then Begin
S.Read( pMem^, S.Size );
S.Position := 0;
GlobalUnlock( hMem );
Clipboard.Open;
try
Clipboard.SetAsHandle( fmt, hMem );
finally
Clipboard.Close;
end;
End { If }
Else Begin
GlobalFree( hMem );
OutOfMemoryError;
End;
End { If }
Else
OutOfMemoryError;
End; { CopyStreamToClipboard }
Procedure CopyStreamFromClipboard( fmt: Cardinal; S: TStream );
Var
hMem: THandle;
pMem: Pointer;
Begin
hMem := Clipboard.GetAsHandle( fmt );
If hMem <> 0 Then Begin
pMem := GlobalLock( hMem );
If pMem <> Nil Then Begin
S.Write( pMem^, GlobalSize( hMem ));
S.Position := 0;
GlobalUnlock( hMem );
End { If }
Else
raise Exception.Create(
'CopyStreamFromClipboard: could not lock global handle '+
'obtained from clipboard!');
End; { If }
End; { CopyStreamFromClipboard }
//////////////////////////////////////////////////////
谢谢大家关心!
http://community.csdn.net/Expert/topic/3915/3915434.xml?temp=.4942133
http://community.csdn.net/Expert/topic/3915/3915786.xml?temp=.4348261