# Omvandla HTML-dokument till bilder ... koden

<datetime class="hidden">2004-06-30T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported -->
Efter lite spel har jag något som funkar nu, jag är ingen Win32 kodare men det här verkar fungera:

Användning av systemet.

Användning av system.Drivning.

Användning av System.Drawing.Imaging.

Användning av System.Samlingar.

Använda System.KomponentModel.

Använda System.Windows.Forms.

Användning av System.Data.

Använda mshtml.

Använda System.Runtime.InteropServices.

Använda Microsoft.Win32.

namnrymdstomografi

{

/// &lt;Sammanfattning&gt;

// // Sammanfattning av formulär 1.

/// &lt;/sammanfattning&gt;

offentlig klass Form1 : System.Windows.Forms.Forms.

{

Privat AxSHDocVw.AxWebBrowser axWebBrowser1.

/// &lt;Sammanfattning&gt;

// Obligatorisk konstruktionsvariabel.

/// &lt;/sammanfattning&gt;

Privat System.KomponentModel.Innehållskomponenter = null ;

Privat sträng urlStr = "http://news.bbc.co.uk/".

offentligt formulär1()

{

//

// Krävs för stöd för Windows Formgivare

//

Initialisera Komponent();

Föremål o = noll.

Detta . Synlig = falsk ;

axWebBrowser1.Navigate(urlStr, ref o, ref o, ref o, ref o, ref o).

}

Int int WM för const int\_PAINT = 0x000F,

Int int WM för const int\_PRINTCLIENT = 0x0318;

Int int WM för const int\_ERASEBKGND = 0x0014;

Int int WM för const int\_PRINT = 0x0317;

const int PRF\_CHILDREN = 0x000000010,

const int PRF\_KLIENT = 0x000000004;

offentligt tomrum GrabWindow ()

{

IntPtr hWnd = detta. Handle;

"Teknik" enligt den allmänna anmärkningen rörande teknik för "utveckling", "produktion" eller "produktion" av utrustning som specificeras i avsnitt 9A004.a.

Bitmap MyBitmap= null ;

IntPtr hDCMem = GDI32.SkapaKompatibelDC((IntePtr) null );

IntPtr hDC = Användare32.GetWindowDC(hWnd);

hBmp = GDI32.SkapaKompatibelBitmap(hDC,(IntPtr)axWebBrowser1.Bredd,(IntPtr)axWebBrowser1.Höjd);

Användare32.ReleaseDC(hWnd, hDC).

IntPtr hOld = GDI32.SelectObject(hDCMem, hBmp);

Användare32.SendMessage( hWnd, WM\_PRINT, hDCMem, nytt IntPtr(PRF)\_CLIENT  på PRF\- Vad är det som händer?

GDI32.SelectObject(hDCMem, hOld);

GDI32.Avlägsna Objekt(hDCMem);

MyBitmap = Bitmap.FromHbitmap(hBmp);

MyBitmap.Save( "test.png" ,ImageFormat.Png);

Denna .Close().

}

/// &lt;Sammanfattning&gt;

/ / / Rensa upp alla resurser som används.

/// &lt;/sammanfattning&gt;

skyddat övertryck tom Kassera ( bool kassera )

{

om (avyttring)

{

Om (komponenter != null )

{

Komponenter.Försvara().

}

}

bas .Diskutera ( kassera );

}

#region Windows Form Designer genererad kod

/// &lt;Sammanfattning&gt;

// / Obligatorisk metod för Designer Support - ändra inte

// // innehållet i denna metod med kodeditorn.

/// &lt;/sammanfattning&gt;

privat tomrum InitializeKomponent()

{

System.Resources.ResourceManager resurser = nytt System.Resources.ResourceManager( typ av (Form1));

Denna .axWebBrowser1 = ny AxSHDocVw.AxWebBrowser();

((System.KomponentModell.ISupportInitialize)( denna .axWebBrowser1)).BeginInit();

Detta .SuspendLayout();

//

// axWebBrowser1

//

Detta .axWebBrowser1.Dock = System.Windows.Forms.DockStyle.Fill;

Detta .axWebBrowser1.Enabled = sant ;

Detta .axWebBrowser1.Plats = nytt system.Drawing.Point(0, 0);

Detta .axWebBrowser1.OcxState = ((System.Windows.Forms.AxHost.State)(resurser.GetObject("axWebBrowser1.OcxState" ));

Denna .axWebBrowser1.Storlek = nytt system.Ritning.Storlek(1024, 768);

Detta .axWebBrowser1.TabIndex = 0;

detta .axWebBrowser1.DokumentComplete += nya AxSHDocVw.DWebBrowserEvenemang2\_DocumentCompleteEventHandler( detta .axWebBrowser1\_DokumentAvsluta);

//

// Formulär 1

//

Detta .AutoScale = falskt ;

Denna .AutoScaleBaseStorlek = nytt system.Drivning.Storlek(5, 13);

Detta .ClientSize = nytt system.Drivning.Storlek(1024, 768);

Detta .Kontroller.Lägg till ( denna .axWebBrowser1);

FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

Detta .Namn = "Form1".

VisaInTaskbar = falskt ;

Denna .Text = "Form1".

((System.KomponentModell.ISupportInitialize)( denna .axWebBrowser1)).EndInit();

Återuppta Layout( false );

}

#slutregion

/// &lt;Sammanfattning&gt;

/// Den huvudsakliga införselpunkten för ansökan.

/// &lt;/sammanfattning&gt;

["Stathread" (Stathread)

statiskt tomrum Main()

{

Ansökan.Kör( nytt formulär1()).

}

privat tomrum axWebBrowser1\_DocumentComplete( objektavsändare, AxSHDocVw.DWebBrowserEvents2\_DokumentAvslutaEvent e)

{

GrabWindow ();

}

}

Klass GDI32

{

[DllImport( "GDI32.dll" )]

offentligt statiskt externt bool BitBlt(IntPtr hdcDest,IntPtr nXDest,IntPtr nYDest,

IntPtr nWidth,IntPtr nHöjd,IntPtr hdcSrc,

"Teknik" enligt den allmänna anmärkningen rörande teknik för "utveckling", "produktion", "produktion" eller "produktion" av utrustning som specificeras i avsnitt 9A004.a.

[DllImport( "GDI32.dll" )]

offentlig statisk extern IntPtr CreateCompatibelBitmap(IntPtr hdc,IntPtr nWidth,

"Teknik" enligt den allmänna anmärkningen rörande teknik för "utveckling", "produktion", "produktion" eller "produktion" av utrustning som specificeras i avsnitt 9A004.a.

[DllImport( "GDI32.dll" )]

offentligt statiskt externt IntPtr CreateCompatibelDC(IntePtr hdc),

[DllImport( "GDI32.dll" )]

offentligt statiskt externt bool Ta bortDC (IntPtr hdc),

[DllImport( "GDI32.dll" )]

offentligt statiskt externt bool Ta bortObjekt(IntPtr hObjekt);

[DllImport( "GDI32.dll" )]

offentligt statiskt externt IntPtr GetDeviceCaps(IntPtr hdc,IntPtr nIndex),

[DllImport( "GDI32.dll" )]

offentligt statiskt extern IntPtr SelectObjekt(IntPtr hdc,IntPtr hgdiobj);

}

klassanvändare32

{

[DllImport( "User32.dll" )]

offentligt statiskt extern IntPtr GetDesktopWindow ();

[DllImport( "User32.dll" )]

offentligt statiskt externt IntPtr GetWindowDC (IntPtr hWnd),

[DllImport( "User32.dll" )]

offentlig statisk extern version av IntePtr ReleaseDC (IntePtr hWnd,IntPtr hDC),

[DllImport( "User32.dll" )]

offentligt statiskt externt int SendMessage (IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam),

}

}