![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мне нужно, чтобы, сервер делал снимок экрана(как клавишей Print [D6, Win95/98]
Delpher-Hacker © (2002-08-11 05:57:00)Я пишу программу, которая следит за удалённым компьютером.
Есто клиет и сервер. Мне нужно, чтобы, сервер делал снимок экрана(как клавишей Print Screen)
и сразуже отправлял мне,клиенту, чтобы я мог его посмотреть.
Снимок не должен превышать размер в 200Кб.
Как это сделать, приведите пожалуйста пример кода?
Заранее спасибо!!!
Ghost. (2002-08-12 17:26:00) [1]На лист ру можно найти исходник такой проги
Vogul (2002-08-12 16:35:00) [2]Для затравки.
void CShowDesktopDlg::CopyDesktop(LPBYTE buffer)
{
CDC dcScreenMem, dcScaled, dcStatic;
CDC dcScreen, *dcOut;
CBitmap Bitmap, BitmapScaled;
CBitmap BitmapFinally;
CRect rect;
DWORD size;
dcScreen.CreateDC("DISPLAY", NULL, NULL, NULL);
dcScreenMem.CreateCompatibleDC(&dcScreen);
dcScaled.CreateCompatibleDC(&dcScreen);
Bitmap.CreateCompatibleBitmap(&dcScreen, 1152, 864);
BitmapScaled.CreateCompatibleBitmap(&dcScreen, 1152, 864);
BitmapFinally.CreateCompatibleBitmap(&dcScreen, 1152, 864);
CBitmap *pOldBitmap = dcScreenMem.SelectObject(&Bitmap);
dcScaled.SelectObject(&BitmapScaled);
CWnd * Display = (CWnd *) GetDlgItem(IDC_DISPLAY);
dcOut = Display->GetDC();
dcStatic.CreateCompatibleDC(dcOut);
BitmapFinally.CreateCompatibleBitmap(dcOut, 290, 200);
Display->GetWindowRect(&rect);
dcScreenMem.BitBlt(0,0,1152,864,&dcScreen,0,0,SRCCOPY);
dcScaled.StretchBlt(0,0,290,200,&dcScreenMem,0,0,1152,864,SRCCOPY);
size = BitmapScaled.GetBitmapBits(1, buffer);
buffer = (LPBYTE) LocalAlloc(LPTR, size*sizeof(BYTE));
BitmapScaled.GetBitmapBits(size, buffer);
BitmapScaled.DeleteObject();
BitmapFinally.SetBitmapBits(size,buffer);
dcOut->BitBlt(0,0,290,200,&dcStatic,0,0,SRCCOPY);
}
Потом жми в jpeg например и отправляй.