Главная страница
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.025 c
7-17418
Fredericco
2003-01-04 15:09
2003.03.06
Передача строк в/из ДЛЛ.


3-16863
Makhanev A.S.
2003-02-17 21:57
2003.03.06
Каким DBGrid ом Вы пользуетесь? Какой посоветуете?


3-16871
VIB
2003-02-18 10:04
2003.03.06
DBGrid


1-17025
Dmitriy_R
2003-02-25 09:40
2003.03.06
Окно внутри окна.


1-17081
Arhangel
2003-02-25 19:03
2003.03.06
filesetdate мудрит!