Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-17084
ALEXEY SLATE
2003-02-25 16:29
2003.03.06
Поиск в EXCEL


4-17429
kamik
2003-01-16 17:48
2003.03.06
Значки


7-17411
ychnik
2003-01-05 16:16
2003.03.06
Работа с буфером


3-16922
Rule
2003-02-15 23:59
2003.03.06
Надо перенести базу данных Аксесс97 на удаленный FB


1-17061
rodion
2003-02-25 15:18
2003.03.06
Локализация программ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский