如何将文件复制到粘贴板 同WINDOWS系统的功能一样,可以在复制以后到任意空间粘贴,解答马上给分,在线等!谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 特别声明,这是别人的答复,我没有试过unit Unit1;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ShlObj;type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);const FileName:string='c:\netlog.txt';var DataHandle: THandle; DataPointer: PDROPFILES;begin DataHandle := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE,SizeOf(DROPFILES)+2+Length(FileName)); DataPointer := PDROPFILES(GlobalLock(DataHandle)); FillChar(DataPointer^,SizeOf(DROPFILES)+2+Length(FileName),0); DataPointer.pFiles:=SizeOf(DROPFILES); DataPointer.pt:=Point(0,0); DataPointer.fNC:=False; DataPointer.fWide:=False; Move(FileName[1],Pointer(Integer(DataPointer)+SizeOf(DROPFILES))^,Length(FileName)); GlobalUnlock(DataHandle); OpenClipboard(Form1.Handle); EmptyClipboard; SetClipboardData(CF_HDROP, DataHandle); CloseClipboard;end;end. 说的挺麻烦,就是copy文件呗?CopyFileTo() bool __fastcall CopyToClipboard(AnsiString file){ int nLen; char* Data; HANDLE hMem; if (file.IsEmpty()) return false; nLen = 20 + file.Length() + 2; hMem = GlobalAlloc(GMEM_MOVEABLE |GMEM_DDESHARE|GMEM_ZEROINIT, nLen); if (hMem==NULL) return false; Data = (char*)GlobalLock(hMem); *(DWORD*)Data = 20; strcpy(Data+20, file.c_str()); GlobalUnlock(hMem); if (OpenClipboard(NULL)) { EmptyClipboard(); if (SetClipboardData( CF_HDROP,hMem)!=0) hMem = NULL; CloseClipboard(); } if (hMem) GlobalFree(hMem); return hMem ? false : true;}bcb的,你改一下 //和楼上原理一样,封装一下uses ShlObj, ClipBrd;procedure CopyFilesToClipboard(FileList: string);var DropFiles: PDropFiles; hGlobal: THandle; iLen: Integer;begin iLen := Length(FileList) + 2; FileList := FileList + #0#0; hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, SizeOf(TDropFiles) + iLen); if (hGlobal = 0) then raise Exception.Create('Could not allocate memory.'); begin DropFiles := GlobalLock(hGlobal); DropFiles^.pFiles := SizeOf(TDropFiles); Move(FileList[1], (PChar(DropFiles) + SizeOf(TDropFiles))^, iLen); GlobalUnlock(hGlobal); Clipboard.SetAsHandle(CF_HDROP, hGlobal); end;end;// Exampleprocedure TForm1.Button1Click(Sender: TObject);begin CopyFilesToClipboard('C:\temp\temp.Txt'#0'C:\temp\temp.bmp');end; 求教:delphi databinding之后如何修改保存 delphi编绎时会产生obj后缀,我想是c++builder产生的吧,对不对 pagecontrol中的hint 关于检测程序是否运行? 这个功能如何实现? 急,谁能把excel里的宏翻译成delphi语句 请教大家一个关于DBChart的问题 散分 一个小问题,看看吧 在线等待:怪事怎解决,,盼高手? 用reportbuilder怎么打印stringgrid的内容? 怎么知道代码是在delphi的那个版本下写的?
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,ShlObj;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
const FileName:string='c:\netlog.txt';
var
DataHandle: THandle;
DataPointer: PDROPFILES;
begin
DataHandle := GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE,SizeOf(DROPFILES)+2+Length(FileName));
DataPointer := PDROPFILES(GlobalLock(DataHandle));
FillChar(DataPointer^,SizeOf(DROPFILES)+2+Length(FileName),0); DataPointer.pFiles:=SizeOf(DROPFILES);
DataPointer.pt:=Point(0,0);
DataPointer.fNC:=False;
DataPointer.fWide:=False;
Move(FileName[1],Pointer(Integer(DataPointer)+SizeOf(DROPFILES))^,Length(FileName));
GlobalUnlock(DataHandle);
OpenClipboard(Form1.Handle);
EmptyClipboard;
SetClipboardData(CF_HDROP, DataHandle);
CloseClipboard;
end;end.
{
int nLen;
char* Data;
HANDLE hMem; if (file.IsEmpty()) return false; nLen = 20 + file.Length() + 2;
hMem = GlobalAlloc(GMEM_MOVEABLE
|GMEM_DDESHARE|GMEM_ZEROINIT,
nLen);
if (hMem==NULL) return false;
Data = (char*)GlobalLock(hMem);
*(DWORD*)Data = 20;
strcpy(Data+20, file.c_str());
GlobalUnlock(hMem);
if (OpenClipboard(NULL)) {
EmptyClipboard();
if (SetClipboardData(
CF_HDROP,hMem)!=0)
hMem = NULL;
CloseClipboard();
}
if (hMem) GlobalFree(hMem); return hMem ? false : true;
}bcb的,你改一下
uses ShlObj, ClipBrd;procedure CopyFilesToClipboard(FileList: string);
var
DropFiles: PDropFiles;
hGlobal: THandle;
iLen: Integer;
begin
iLen := Length(FileList) + 2;
FileList := FileList + #0#0;
hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT,
SizeOf(TDropFiles) + iLen);
if (hGlobal = 0) then raise Exception.Create('Could not allocate memory.');
begin
DropFiles := GlobalLock(hGlobal);
DropFiles^.pFiles := SizeOf(TDropFiles);
Move(FileList[1], (PChar(DropFiles) + SizeOf(TDropFiles))^, iLen);
GlobalUnlock(hGlobal);
Clipboard.SetAsHandle(CF_HDROP, hGlobal);
end;
end;// Example
procedure TForm1.Button1Click(Sender: TObject);
begin
CopyFilesToClipboard('C:\temp\temp.Txt'#0'C:\temp\temp.bmp');
end;