Главная страница
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
1-17109
Sergey_El'f
2003-02-26 09:25
2003.03.06
Как выбрать строку в дбгриде под мышиным курсором?


1-17138
Luc
2003-02-17 07:23
2003.03.06
Картинки в FastReport 2.45


4-17451
Cheboor
2003-01-19 10:45
2003.03.06
Как отследить запуск другого приложения?


1-17073
Vitus
2003-02-25 17:22
2003.03.06
Как всем элементам TActionList свойство Enabled := False?


3-16859
bers
2003-02-17 21:26
2003.03.06
Цветовая индикация