# HTML-dokumenttien muuttaminen kuviksi... koodi

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

<!-- category -- mostlylucidcouk, Imported -->
Vähän pelaamisen jälkeen jokin toimii nyt, en ole Win32-kooderi, mutta tämä näyttää toimivan:

Järjestelmän käyttö;

Käyttämällä System.Drawing;

Käyttämällä System.Drawing.Kuvaus;

Käyttämällä System.Collections;

System.ComponentModelin käyttö;

Käyttämällä System.Windows.Forms;

Käyttämällä System.Dataa;

käyttämällä mshtml:ää;

Käyttämällä System.Runtime.InteropServices;

Microsoft.Win32:n käyttö;

namespace ThumbMaker

{

/// &lt;yhteenveto&gt;

/// Lomakkeen 1 tiivistelmän kuvaus.

/// &lt;/tiivistelmä&gt;

Julkinen luokka Form1 : System.Windows.Forms.Form

{

yksityinen AxSHDocVw.AxWebBrowser axWebBrowser1

/// &lt;yhteenveto&gt;

// Vaadittu suunnittelijamuuttuja.

/// &lt;/tiivistelmä&gt;

Private System.ComponentModel.Container components = null ;

Private const string urlStr = "http://news.bbc.co.uk/"

Julkinen muoto1()

{

//

// Vaadittu Windows Form Designer -tuelle

//

Alusta Componet();

kohde o = nolla ;

Tämä .Näkyvä = väärä ;

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

}

const int WM\_PAINT = 0x000F;

const int WM\_PRINTCLIENT = 0x0318;

const int WM\_ERASEBKGND = 0x0014;

const int WM\_PRINT = 0x0317;

const int PRF\_CHILDREN = 0x00000010;

const int PRF\_LUETTELO = 0x00000004;

julkinen tyhjiö GrabWindow()

{

IntPtr hWnd = tämä .Handle;

IntPtr hBmp;

Bitmap MyBitmap = nolla;

IntPtr hDCMem = GDI32.CreateCompatibleDC ((IntPtr) null );

IntPtr hDC = User32.GetWindowDC(hWnd);

hBmp = GDI32.CreateCompatibleBitmap(hDC,(IntPtr)axWebBrowser1.Width, (IntPtr)axWebBrowser1.Hight;

Käyttäjä32.ReleaseDC(hWnd, hDC);

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

Käyttäjä32.Lähetä viesti(hWnd, WM\_PRINT, hDCMem, uusi IntPtr(PRF)\_Lisätietoja PRF:stä\_CHILDREN)

GDI32.SelectObject(hDCMem, hOld);

GDI32.DeleteObject(hDCMem);

MyBitmap = Bitmap.Hbitmap(hBmp);

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

Tämä .Close();

}

/// &lt;yhteenveto&gt;

// Puhdista kaikki käytetyt resurssit.

/// &lt;/tiivistelmä&gt;

Suojattu ohitustyhjiö Hävitä( boolin hävittäminen )

{

jos ( hävittäminen )

{

jos (komponentteja ! = nolla )

{

komponentteja. Hävitä();

}

}

pohja . Hävitä( hävittäminen );

}

#region Windows Form Designer loi koodin

/// &lt;yhteenveto&gt;

// Vaadittu menetelmä Designer-tuelle - älä muuta

/// tämän menetelmän sisältö koodieditorilla.

/// &lt;/tiivistelmä&gt;

Private tyhjyys AlumnizeComponent ()

{

System.Resources.ResourceManager resources = uusi System.Resources.ResourceManager ( type of (Form1));

tämä.axWebBrowser1 = uusi AxSHDocVw.AxWebBrowser();

((System.ComponentModel.ISupportInitialize) (tämä .axWebBrowser1)).

Tämä .SuspendLayout();

//

/ / axWebBrowser1

//

Tämä .axWebBrowser1.Dock = System.Windows.Forms.DockStyle.Fill;

Tämä .axWebBrowser1.Enabled = true ;

Tämä .axWebBrowser1.Sijainti = uusi System.Drawing.Point(0, 0);

Tämä .axWebBrowser1.OcxState = ((System.Windows.Forms.AxHost.State) (resurssit.GetObject( "AxWebBrowser1.OcxState"))

Tämä .axWebBrowser1.Koko = uusi System.Drawing.Koko (1024, 768);

Tämä .axWebBrowser1.TabIndex = 0;

this.axWebBrowser1.Document Complete + = uusi AxSHDocVw.DWebBrowserTapahtumat2\_Document CompleteEventHandler( this .axWebBrowser1\_AsiakirjaTäydellinen;

//

// Lomake1

//

Tämä .AutoScale = väärä ;

Tämä .AutoScaleBaseSize = uusi System.Drawing.Size(5, 13);

Tämä .ClientSize = uusi System.Drawing.Size(1024, 768);

Tämä .Ohjausobjektit.Lisää (tämä .axWebBrowser1);

Tämä .FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

Tämä .Nimi = "Form1" ;

Tämä .ShowInTaskbar = väärä ;

Tämä .Teksti = "Form1" ;

((System.ComponentModel.ISupportInitialize) (tämä .axWebBrowser1)).EndInit();

tämä .ResumeLayout ( false );

}

#endregion

/// &lt;yhteenveto&gt;

/// Hakemuksen pääsyöttöpiste.

/// &lt;/tiivistelmä&gt;

[STATread]

staattinen tyhjiö Main()

{

Hakemus.Run (uusi lomake 1())

}

yksityinen axWebBrowser1\_AsiakirjaTäydellinen( objektin lähettäjä, AxSHDocVw.DWebBrowserTapahtumat2\_AsiakirjaTäydellinen tapahtuma e)

{

GrabWindow();

}

}

luokka GDI32

{

[DllImport( "GDI32.dll" )]

julkinen staattinen ulosajo BitBlt(IntPtr hdcDest,IntPtr nXDest,IntPtr nYDest,

IntPtr nWidth,IntPtr nHight,IntPtr hdcSrc,

IntPtr nXSrc,intPtr nYSrc,intPtr dwRop;

[DllImport( "GDI32.dll" )]

julkinen staattinen ulostulo IntPtr CreateCompatibleBitmap (IntPtr hdc,IntPtr nWidth,

IntPtr nHight;

[DllImport( "GDI32.dll" )]

Julkinen staattinen ulostulo IntPtr CreateCompatibleDC (IntPtr hdc);

[DllImport( "GDI32.dll" )]

staattinen ulkobooli DeleteDC(IntPtr hdc);

[DllImport( "GDI32.dll" )]

julkinen staattinen outtern bool DeleteObject (IntPtr hObject);

[DllImport( "GDI32.dll" )]

Julkinen staattinen uloskäynti IntPtr GetDeviceCaps (IntPtr hdc,IntPtr nIndex);

[DllImport( "GDI32.dll" )]

julkinen staattinen uloskäynti IntPtr SelectObject (IntPtr hdc,IntPtr hgdiobj);

}

Luokkakäyttäjä32

{

[DllImport( "User32.dll" )]

Julkinen staattinen uloskäynti IntPtr GetDesktopWindow();

[DllImport( "User32.dll" )]

Julkinen staattinen uloskäynti IntPtr GetWindowDC (IntPtr hWnd);

[DllImport( "User32.dll" )]

Julkinen staattinen uloskäynti IntPtr ReleaseDC (IntPtr hWnd,IntPtr hDC);

[DllImport( "User32.dll" )]

static extern int SendMessage (IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);

}

}