Форум: "WinAPI";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
ВнизЗамена буфера обмена Найти похожие ветки
← →
buben © (2007-05-25 16:52) [0]Изменяю буфер обмена
[code]
procedure CopyStringToClipboard(s: string);
var
hg: THandle;
P: PChar;
begin
hg:=GlobalAlloc(GMEM_DDESHARE or GMEM_MOVEABLE, Length(S)+1);
P:=GlobalLock(hg);
StrPCopy(P, s);
GlobalUnlock(hg);
OpenClipboard(0);
SetClipboardData(CF_TEXT, hg);
CloseClipboard;
GlobalFree(hg);
end;
[/code]
Но этот изменённый буфер, в дальнейшем, вставляется не во все приложения, есть такие, в которые он вставляется, как захваченный до изменения. Как реализовать вставку во все приложения?
Пробовал так,
[code]
SetClipboardData(CF_TEXT, hg);
SetClipboardData(CF_LOCALE, hg);
SetClipboardData(CF_OEMTEXT, hg);
[/code]
результат прежний.
← →
Belorus © (2007-05-26 12:05) [1]А что за модный тег [code] ?
← →
ElectriC © (2007-05-27 02:57) [2]
> Belorus ©
Это, типа, крутое объявление того, что дальше идёт исходник ;)))))))))
← →
ElectriC © (2007-05-27 02:59) [3]Удалено модератором
← →
Сергей М. © (2007-05-28 10:07) [4]
procedure TClipboard.SetBuffer(Format: Word; var Buffer; Size: Integer);
var
Data: THandle;
DataPtr: Pointer;
begin
Open;
try
Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
try
DataPtr := GlobalLock(Data);
try
Move(Buffer, DataPtr^, Size);
Adding;
SetClipboardData(Format, Data);
finally
GlobalUnlock(Data);
end;
except
GlobalFree(Data);
raise;
end;
finally
Close;
end;
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c