Здравствуйте, Аноним, Вы писали:
А>собственно сабж. Возможно ли такое?
Если еще актуально, вот как я это делал. Вначале делаем форму невидимой. Например с помощью Opacity=0.00F;
Вот как я делаю screenshot'ы каждые 5 сек (они записывыются в директории при ложения в формате picN.bmp:
private void GetScreenshots()
{
Bitmap btm;
int width=Screen.PrimaryScreen.Bounds.Width;
int height=Screen.PrimaryScreen.Bounds.Height;
int imageNumber=0;
while(true)
{
btm=this.GetScreenShot(width,height);
btm.Save("pic"+imageNumber.ToString()+".bmp");
imageNumber++;
System.Threading.Thread.Sleep(5000);
}
}
public Bitmap GetScreenShot(int width, int height)
{
int x=0,y=0;
//получаем dc экрана
IntPtr hDCSource =GetDC(IntPtr.Zero);
//создаем другой dc, совмещаемый с источником
IntPtr hDCDestination =CreateCompatibleDC(hDCSource);
//создаем bitmap, совмещаемый с источником
IntPtr hBitmap =CreateCompatibleBitmap(hDCSource,width,height );
//выбираем bitmap в dc
SelectObject(hDCDestination, hBitmap);
//копируем из источника
BitBlt(hDCDestination, 0, 0, width, height, hDCSource, x, y, SRCCOPY);
Bitmap bitmap =Bitmap.FromHbitmap(hBitmap);
DeleteObject(hDCDestination);
DeleteObject(hBitmap);
ReleaseDC(IntPtr.Zero,hDCSource);
return bitmap;
}
//А вот импорт:
public const int SRCCOPY = 0x00CC0020;
[DllImport("Gdi32.dll")]
public static extern int BitBlt(
IntPtr hdcDest,
int nXDest,
int nYDest,
int nWidth,
int nHeight,
IntPtr hdcSrc,
int nXSrc,
int nYSrc,
int dwRop
);
[DllImport("user32.dll")]
public static extern int ReleaseDC(
IntPtr hWnd, // handle to window
IntPtr hDC // handle to DC
);
[DllImport("user32.dll")]
public static extern IntPtr GetDC(
IntPtr hWnd // handle to window
);
[DllImport("Gdi32.dll")]
public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hGdiObj);
[DllImport("Gdi32.dll")]
public static extern IntPtr CreateCompatibleDC(IntPtr hdc);
[DllImport("Gdi32.dll")]
public static extern IntPtr CreateCompatibleBitmap(IntPtr hDC, int nWidth, int nHeight);
[DllImport("Gdi32.dll")]
public static extern int DeleteObject(IntPtr hObject);