1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
uses
OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB,
cxGraphics, ActiveX, ComObj, MSHTML;
{Place la surbrillance sur le mot recherché }
procedure TForm1.SearchAndHighlightText(aText: string);
var
tr: IHTMLTxtRange;
begin
if not EmbeddedWB1.Busy then
begin
tr := ((EmbeddedWB1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
while tr.findText(aText, 1, 0) do
begin
tr.pasteHTML('<span style="background-color: Lime; font-weight: bolder;">' + tr.htmlText + '</span>');
tr.scrollIntoView(True);
end;
end;
end;
{Transorme le WebBrowser en TBitmap }
procedure WebBrowserScreenShot(const wb: TEmbeddedWB);
var
viewObject: IViewObject;
MyRect: TRect;
bitmap: TBitmap;
PixelSearch: TColor;
j, i, k: integer;
row: pRGBTripleArray;
R, G, B: Byte;
CouleurPixel: TColor;
begin
PixelSearch := ClLime; {ou soit R = 0; V = 255 ; B = 0 }
if wb.Document <> nil then
begin
wb.Document.QueryInterface(IViewObject, viewObject);
if Assigned(viewObject) then
try
bitmap := TBitmap.Create;
bitmap.PixelFormat := pf24bit;
try
MyRect := Rect(0, 0, wb.Width, wb.Height);
bitmap.Height := wb.Height;
bitmap.Width := wb.Width;
viewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, bitmap.Canvas.Handle, @r, nil, nil, 0);
/////////////// SCANLINE pour trouver un pixel de couleur Lime /////////////////
with bitmap.Canvas do
begin
for x := 0 to (Bitmap.Width - 1) do
for y := 0 to (Bitmap.Height - 1) do
begin
CouleurPixel := Pixels[x, y];
R := getRValue(CouleurPixel);
G := getGValue(CouleurPixel);
B := getBValue(CouleurPixel);
if (R = 0) and (G = 255) and (B = 0) then
showmessage('bingo!');
end;
end;
/////////////////////////////////////////////
finally
bitmap.Free;
end;
finally
viewObject._Release;
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
SearchAndHighlightText('MyWord');
WebBrowserScreenShot(EmbeddedWB1);
end; |
Partager