如题
解决方案 »
- 1+2*3=?像这样的运算公式,如何求解?求代码?
- 2句代码,却看不出StretchBlt如何使用?
- 在webbrowser中执行js语句,不能进行 多行文本的赋值,如何解决?
- 200分只给一个人,是Delphi流操作比较慢吗?为何通过流然后绘制到Image上闪动比较厉害。求老大帮忙!!!!!!!!!
- 『晕倒!为什么好多技术帖都往这里发』
- 求线程之间数据传递的解决方案,进者有分,在线等待!
- 什么函数能得到当前的时间,只包括:小时、分、秒。
- 在ACCESS数据库中使用模糊查找出现的问题?
- 多线程问题
- 任何使alt+f4失效?
- 一个超难的查询问题,Access数据库SQL语言相关
- 100再开一帖,求牛人!word的vba----->delphi代码
procedure SetFilesToClipboard(FileList: string);
var
DropFiles: PDropFiles;
hGlobal: THandle;
iLen: Integer;
begin
iLen := Length(FileList);
hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT,
SizeOf(TDropFiles) + iLen);
if hGlobal <> 0 then
begin
DropFiles := GlobalLock(hGlobal);
DropFiles^.pFiles := SizeOf(TDropFiles);
Move(FileList[1], (PChar(DropFiles) + SizeOf(TDropFiles))^, iLen);
GlobalUnlock(hGlobal);
Clipboard.Open;
try
Clipboard.Clear;
Clipboard.SetAsHandle(CF_HDROP, hGlobal);
finally
Clipboard.Close;
end;
end;
end;
但是怎样将文件“剪切”到粘贴板呢?
各位高手请指教
PDropFiles = ^TDropFiles;
TDropFiles = record
pFiles: DWORD; { offset of file list }
pt: TPoint; { drop point (client coords) }
fNC: BOOL; { is it on NonClient area }{ and pt is in screen coords }
fWide: BOOL; { WIDE character switch }
end;const
DROPEFFECT_COPY = 1;
DROPEFFECT_MOVE = 2;
procedure CutOrCopyFiles(pFileList: Pchar; ListStrLen: integer; bCopy: Boolean);
var
hGblFileList: HGLOBAL; // 内存块句柄
pFileListDate: Pbyte; // 内存块地址 HandleDropEffect: UINT; // 注册类型句柄
hGblDropEffect: HGLOBAL; // 内存块句柄
pdwDropEffect: PDWORD; // 操作类型标识
begin
hGblFileList := GlobalAlloc(GMEM_ZEROINIT or GMEM_MOVEABLE or GMEM_SHARE, ListStrLen+Sizeof(TDropFiles));
pFileListDate := GlobalLock(hGblFileList);
PDropFiles(pFileListDate)^.pFiles:=Sizeof(TDropFiles);
PDropFiles(pFileListDate)^.pt.Y:=0;
PDropFiles(pFileListDate)^.pt.X:=0;
PDropFiles(pFileListDate)^.fNC:=False;
PDropFiles(pFileListDate)^.fWide:=False;
inc(pFileListDate,Sizeof(TDropFiles)); //指针后移
CopyMemory(pFileListDate,pFileList,ListStrLen);
GlobalUnlock(hGblFileList); HandleDropEffect := RegisterClipboardFormat('Preferred DropEffect');
hGblDropEffect := GlobalAlloc(GMEM_ZEROINIT or GMEM_MOVEABLE or GMEM_SHARE, sizeof(DWORD));
pdwDropEffect := GlobalLock(hGblDropEffect);
if(bCopy) then
pdwDropEffect^ := DROPEFFECT_COPY
else
pdwDropEffect^ := DROPEFFECT_MOVE;
GlobalUnlock(hGblDropEffect); if OpenClipboard(0) then
begin
EmptyClipboard();
SetClipboardData(HandleDropEffect,hGblDropEffect);
SetClipboardData( CF_HDROP, hGblFileList );
CloseClipboard();
end
else
showmessage('无法打开,可能被别的程序占用');
end;procedure TForm1.Button1Click(Sender: TObject);
begin
CutOrCopyFiles('c:\test\1.txt'+#0+'c:\test\2.txt'+#0,28,false);
end;
谢谢!不愧是高手!
能不能给个粘贴的函数?
读的时候用GetClipboardData