Avatar billede frodi Nybegynder
29. maj 2006 - 21:13 Der er 3 kommentarer

Screen capture - kan man få fat i en bestemt applikation på deskt

Der findes mange screen capture programmer der danner et image af hele desktoppen, men hvordan får man fat i et bestemt vindue, sådan at man kan evt. flytte vinduet og få det som et image?


ligesom ved ALT+PrintSCR når man har valgt et bestemt vindue.
Avatar billede Syska Mester
29. maj 2006 - 21:39 #1
http://www.pinvoke.net/default.aspx/user32/GetWindowDC.html

Der står hvordan du ca. gør.....


her er lidt af min egen kode....
[System.Runtime.InteropServices.DllImportAttribute("user32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hwnd);

[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern bool BitBlt(
    IntPtr hdcDest,    // handle to destination DC
    int nXDest,        // x-coord of destination upper-left corner
    int nYDest,        // y-coord of destination upper-left corner
    int nWidth,        // width of destination rectangle
    int nHeight,        // height of destination rectangle
    IntPtr hdcSrc,      // handle to source DC
    int nXSrc,          // x-coordinate of source upper-left corner
    int nYSrc,          // y-coordinate of source upper-left corner
    System.Int32 dwRop  // raster operation code
);

[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern IntPtr CreateDC(
    string lpszDriver,  // driver name
    string lpszDevice,  // device name
    string lpszOutput,  // not used; should be NULL
    IntPtr lpInitData  // optional printer data
);



Her er så funktionen.... den her tager bare af din form, men principet er det samme ved andre...

            IntPtr screenDC = GetWindowDC(this.Handle);
            // IntPtr screenDC = CreateDC("DISPLAY", null, null, (IntPtr)null);
            Graphics screenGraphics = Graphics.FromHdc(screenDC);
            Image MyImage = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height, screenGraphics);
            Graphics destGraphics = Graphics.FromImage(MyImage);
            screenDC = screenGraphics.GetHdc();
            IntPtr destDC = destGraphics.GetHdc();
            BitBlt(destDC, 0, 0, this.ClientRectangle.Width, this.ClientRectangle.Height, screenDC, 0, 0, 13369376);
            screenGraphics.ReleaseHdc(screenDC);
            destGraphics.ReleaseHdc(destDC);
            MyImage.Save(@"C:\Captured.jpg", ImageFormat.Jpeg);

// ouT
29. maj 2006 - 22:08 #2
ER det C# programering du snakker om ?

ellers denne util http://www.gadwin.com/printscreen/ ka' anbefals !!!
Avatar billede Syska Mester
29. maj 2006 - 23:58 #3
tjaa, hvis det bare et et program findes der også Cropper...
http://blogs.geekdojo.net/brian/articles/Cropper.aspx

// ouT
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester