uses
ActiveX, ComObj, UrlMon;
const
IID_IPicture: TGUID = '{7bf80980-bf32-101a-8bbb-00aa00300cab}';
var
Pict: IPicture;
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: IStream;
Bitmap: HBITMAP;
begin
OleCheck(URLOpenBlockingStreamW(nil, 'http://i.codenet.ru/www/images/logo.gif', Stream, 0, nil));
OleCheck(OleLoadPicture(Stream, 0, True, IID_IPicture, Pict));
OleCheck(Pict.get_Handle(OLE_HANDLE(Bitmap)));
Image1.Picture.Bitmap.Handle := Bitmap;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CoInitializeEx(nil, COINIT_MULTITHREADED or COINIT_SPEED_OVER_MEMORY);
end;
Загрузка изображений в TImage из интернета
Подскажите, плз, можно ли, и если можно, то как загрузить картинку из интернета в компонент TImage?
Код:
ps: кстати в D5 этот код вызывает экскепшн, а в D7 все работает. почему косяк - читайте ниже.
спасиб огромное )
Цитата:
function URLOpenBlockingStreamW(p1: IUnknown; p2: PWideChar; p3: IStream; p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
а надо (взято из D7)
Цитата:
function URLOpenBlockingStreamW(p1: IUnknown; p2: PWideChar; out p3: IStream; p4: DWORD; p5: IBindStatusCallback): HResult; stdcall;
И еще. Не надо забывать вызывать CoInitializeEx (хотя CoInitialize и вызывается при инициализации модуля ComObj)