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
{
/// <Sammanfattning>
// // Sammanfattning av formulär 1.
/// </sammanfattning>
offentlig klass Form1 : System.Windows.Forms.Forms.
{
Privat AxSHDocVw.AxWebBrowser axWebBrowser1.
/// <Sammanfattning>
// Obligatorisk konstruktionsvariabel.
/// </sammanfattning>
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().
}
/// <Sammanfattning>
/ / / Rensa upp alla resurser som används.
/// </sammanfattning>
skyddat övertryck tom Kassera ( bool kassera )
{
om (avyttring)
{
Om (komponenter != null )
{
Komponenter.Försvara().
}
}
bas .Diskutera ( kassera );
}
#region Windows Form Designer genererad kod
/// <Sammanfattning>
// / Obligatorisk metod för Designer Support - ändra inte
// // innehållet i denna metod med kodeditorn.
/// </sammanfattning>
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
/// <Sammanfattning>
/// Den huvudsakliga införselpunkten för ansökan.
/// </sammanfattning>
["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),
}
}
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.