Понедельник
29-04-2024
06:52
Главная страница
Каталог статей
Информист Приветствую Вас Гость | RSS
Регистрация
Вход
Меню сайта

Категории каталога
Delphi [3]
C++ [5]
Java [28]
программирование на Java
Assembler [4]
Алгоритмы на ассме
C# [1]
Eclipse [1]

Наш опрос
Насколько вам понравился этот сайт
Всего ответов: 545

Копилка
Если вам понравился наш сайт или вы нашли полезную информацию, то у вас есть возможность отблагодарить администрацию.

Начало » Статьи » Programming » C++

Screenshot экрана
/* <Include> */
#include <windows.h>
/* </Include> */

/* <Const> */
const char *AppName="Yeah";
/* </Const> */

/* <Function> */
void SaveScreen(HWND pScreen, char Path[])
{
 int Width = /*GetSystemMetrics(SM_CXSCREEN)*/1280;
 int Height = /*GetSystemMetrics(SM_CYSCREEN)*/1024;

  HDC hdcScreen;
  HBITMAP hbmScreen;
 
 
  //---------------Bitmap Informationen
  BITMAPINFO infobmp;
  infobmp.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  infobmp.bmiHeader.biWidth = Width;
  infobmp.bmiHeader.biHeight = Height;
  infobmp.bmiHeader.biPlanes = 1;
  infobmp.bmiHeader.biBitCount = 24;
  infobmp.bmiHeader.biCompression = 0;
  infobmp.bmiHeader.biSizeImage = 0;
  infobmp.bmiHeader.biXPelsPerMeter = 0;
  infobmp.bmiHeader.biYPelsPerMeter = 0;
  infobmp.bmiHeader.biClrUsed = 0;
  infobmp.bmiHeader.biClrImportant = 0;
 
  int* bitmap = new int[Width*Height*3];
 
  BITMAPFILEHEADER bfheader;
   
  bfheader.bfType = 19778;
  bfheader.bfSize = sizeof(BITMAPFILEHEADER) + Width*Height*3 + sizeof(BITMAPINFOHEADER);
  bfheader.bfReserved1 = 0;
  bfheader.bfReserved2 = 0;
  bfheader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
  //Bitmap ----------------------- Informationen
 
 
  hdcScreen = GetWindowDC(pScreen);
  hbmScreen = CreateCompatibleBitmap(hdcScreen, Width, Height);
 
  // temporärer DC
  HDC hdcTemp = CreateCompatibleDC(hdcScreen);
 
  // Bitmap reinselektieren
  HBITMAP hbmOld = (HBITMAP)SelectObject(hdcTemp, hbmScreen);
 
  // Inhalt von Desktop übertragen
  BitBlt(hdcTemp, 0, 0, Width, Height, hdcScreen, 0, 0, SRCCOPY);
 
  int iResult = GetDIBits(hdcTemp, hbmScreen, 0, Height, bitmap, &infobmp, DIB_RGB_COLORS);
 
  // aufräumen
  SelectObject(hdcTemp, hbmOld);
  DeleteObject(hbmScreen);
  DeleteDC(hdcTemp);
 
  HANDLE hfile = CreateFile(Path, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0);
 
  //Datei Schreiben
  DWORD word;
  WriteFile(hfile, &bfheader, 14, &word, NULL);
  WriteFile(hfile, &infobmp, 40,& word, NULL);
  WriteFile(hfile, bitmap, Width*Height*3, &word,NULL);
 
  ReleaseDC(pScreen, hdcScreen);
  CloseHandle(hfile);
  delete[] bitmap;
}
/* </Function> */

int WINAPI WinMain(  
  HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPSTR lpCmdLine,
  int nCmdShow)

 HWND hWnd = FindWindow(NULL, AppName);


 char *path="Z:/neu.bmp";
 Sleep(1000);
 SaveScreen(hWnd, path);

 return 0;
}



Источник: http://board.gulli.com/thread/1344938-c---screenshot/
Категория: C++ | Добавил: Judge (30-05-2009)
Просмотров: 1929 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Поиск по каталогу
Яндекс


Поиск по Информисту

Наша кнопка


Друзья сайта

Статистика


Copyright MyCorp © 2006Сайт создан в системе uCoz