Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.06;
Скачать: CL | DM;

Вниз

Подскажите: Хитрости с клипбоардом   Найти похожие ветки 

 
Stager   (2003-01-19 19:59) [0]

Есть задача.

Вводная: Известно, что в Windows-броузере существует возможность выделить несколько файлов, скопировать в клипбоард, после чего вставить в другом месте.

Вопрос: можно ли средствами API получить список файлов, скопированных в клипбоард таким образом, а также создавать их самостоятельно?

Примечание: Попытка извлечь такое содержимое как текст выдает пустую строку. Формат сообщения в клипбоарде имеет номер 15 (CF_HDROP), и не описан ни в каких доступных мне хелпах.

С уважением, Алексей.


 
Набережных С.   (2003-01-19 22:06) [1]

procedure TForm1.BitBtn1Click(Sender: TObject);
var
H: THandle;
s: string;
n, Count: integer;
begin
ListBox1.Items.Clear;
H:=Clipboard.GetAsHandle(CF_HDROP);
if H = 0 then Exit;
Count:=DragQueryFile(H,DWORD(-1),nil,0);
if Count = 0 then Exit;
SetLength(s,MAX_PATH);
for n:=0 to Count-1 do
begin
DragQueryFile(H,n,@s[1],MAX_PATH+1);
ListBox1.Items.Add(PChar(s));
end;
end;

type
PDROPFILES = ^TDROPFILES;
TDROPFILES = packed record
pFiles: DWORD;
pt: TPOINT;
fNC: BOOL;
fWide: BOOL;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
H: HGLOBAL;
n, Size: integer;
P: PChar;
begin
Size:=SizeOf(TDROPFILES)+1;
for n:=0 to ListBox1.Items.Count-1 do
Inc(Size, Length(ListBox1.Items[n])+1);
H:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE or GMEM_ZEROINIT,Size);
if H = 0 then Exit;
try
P:=GlobalLock(H);
try
with PDropFiles(P)^ do
begin
pFiles:=SizeOf(TDropFiles);
fWide:=false;
end;
Inc(P, SizeOf(TDROPFILES));
for n:=0 to ListBox1.Items.Count-1 do
begin
StrPCopy(P,ListBox1.Items[n]);
Inc(P,Length(ListBox1.Items[n])+1);
end;
ListBox1.Items.Clear;
finally
GlobalUnlock(H);
end;
except
GlobalFree(H);
raise;
end;
Clipboard.SetAsHandle(CF_HDROP,H);
end;


 
Stager   (2003-01-20 01:22) [2]

Спасибо огромное. Все работает.

С уважением, Алексей.



Страницы: 1 вся ветка

Текущий архив: 2003.03.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
3-16854
Tornado
2003-02-14 11:12
2003.03.06
Как определить?


14-17293
Sorm
2003-02-07 16:09
2003.03.06
Нужен компонент позвол. замораживать столбцы


6-17234
evgeniy2
2003-01-17 19:11
2003.03.06
Hook


7-17404
Groove_
2003-01-07 00:42
2003.03.06
Mouse.visible:=false;


1-17156
Шишкин Илья
2003-02-23 13:23
2003.03.06
Как изменить курсоры мыши?