Как я могу это сделать? Я искал по всему интернету, чтобы найти некоторые подсказки, но не смог.
Вы можете щелкнуть ссылку в браузере и скопировать ее, а затем вставить ее, например, в документ Word.
Я использовал tcxGrid с некоторыми полями и хочу вставить эту ссылку в поле. Поле покажет вам текст, но если вы щелкните по нему, откроется браузер с этой ссылкой.
Я могу исправить все последующие части, но я не знаю, как извлечь текст и ссылку из буфера обмена.
Кто-нибудь знает как это сделать?
Я нашел старую статью, которая описывает, как вы можете это сделать, но результат не очень хороший. Я получаю текст на китайском языке вместо HTML .. см. Ниже мой тестовый код:
function TForm2.clipBoardAsHTML: string;
var
CF_HTML: UINT;
CFSTR_INETURL: UINT;
URL: THandle;
HTML: THandle;
Ptr: PChar;
begin
CF_HTML := RegisterClipboardFormat('HTML Format');
CFSTR_INETURL := RegisterClipboardFormat('UniformResourceLocator');
result := '';
with Clipboard do
begin
Open;
try
HTML := GetAsHandle(CF_HTML);
if HTML <> 0 then
begin
Ptr := PChar(GlobalLock(HTML));
if Ptr <> nil then
try
Result := Ptr;
finally
GlobalUnlock(HTML);
end;
end;
finally
Close;
end;
end;
end;
Данные выглядят так:
敖 獲 潩 㩮 ⸱ര 匊 慴 瑲 呈 䱍 〺〰〰〰 ㄲ ര 䔊 摮 呈 䱍 〺〰〰㈰ 㐳 ള 匊 慴
и многое другое.
Значит, с моим кодом что-то не так ..: (
Рекомендованный формат CFSTR_INETURL не существует в буфере обмена при получении копии из Firefox и Excel, поэтому я не смог получить никаких данных, используя этот формат.
==================================
Последний тест - получение имен форматов.
procedure TForm2.Button2Click(Sender: TObject);
var
i: integer;
s: string;
szFmtBuf: array[0..350] of PWideChar;
fn: string;
fmt: integer;
begin
Memo1.Clear;
for i := 0 to clipBoard.FormatCount - 1 do
begin
fmt := clipBoard.Formats[i];
getClipBoardFormatName(fmt,@szFmtBuf,sizeOf(szFmtBuf));
fn := WideCharToString(@szFmtBuf);
if fmt >= 49152 then
Memo1.Lines.Add(fmt.ToString+ ' - '+fn);
end;
end;
Наконец-то я заставил этот код работать :), но главный вопрос, как я получу URL из буфера обмена, все еще не решен. :(
Если я перебираю все найденные форматы, я получаю от них только мусор.
Форматы из Firefox выглядят так:
49161 - DataObject
49451 - text/html
49348 - HTML Format
50225 - text/_moz_htmlcontext
50223 - text/_moz_htmlinfo
50222 - text/x-moz-url-priv
49171 - Ole Private Data