TImage *pImage = NULL;
TCanvas *pCanvas = NULL;
pImage = new TImage(this);
pCanvas = new TCanvas();
pCanvas->Handle = GetWindowDC( GetDesktopWindow() );
pImage->Width = pCanvas->ClipRect.Width();
pImage->Height = pCanvas->ClipRect.Height();
pImage->Canvas->CopyRect(pCanvas->ClipRect, pCanvas, pCanvas->ClipRect);
pImage->Picture->SaveToFile("C:\\Desktop.bmp");
delete pImage;
delete pCanvas;
как сделать print scrn с помощью С++builder
как проэмитировать нажатие print scrn с помощью С++builder и где эта картинка хранится?
Цитата: Дима Цветовик
как проэмитировать нажатие print scrn с помощью С++builder и где эта картинка хранится?
Возможно не лучший вариант, но это первое что пришло в голову. Картинка сохранится в файле C:\Desktop.bmp
Код:
Для того чтобы сохранить в буфере обмена, копайте в сторону SaveToClipboardFormat.
Можеш попробывать вариант с keybd_event() и VK_SNAPSHOT или VK_PRINT а там уже из буфера обмена достать картинку.
Вариант о nikitozz'а самый оптимальный, однако если хочется через клипбород, то у TBitmap есть методы SavetoClipBorad (или SavetoClipBrd) и соответственно LoadFrom... насчет TImage не помню.
В форму надо добавить TImage.
Код:
function PrintScrn():TBitmap//Функция сканирования экрана.
var
dc: THDC; //Контекст рисования экрана
x,y:integer; //координаты текущей сканируемой точки
begin
dc:=GetDC(0); //Получаем контекст
Image1.Canvas.Handle:=dc; //Назначаем его канве изображения
//Сканирование (поточечное).
for x:=0 to Scren.Width-1 do //x
for y:=0 to Screen.Height-1 do//y
PrintScrn.Canvas.Pixels[x,y]:=Image1.Canvas.Pixels[x,y];//Цвет точки
end;
var
dc: THDC; //Контекст рисования экрана
x,y:integer; //координаты текущей сканируемой точки
begin
dc:=GetDC(0); //Получаем контекст
Image1.Canvas.Handle:=dc; //Назначаем его канве изображения
//Сканирование (поточечное).
for x:=0 to Scren.Width-1 do //x
for y:=0 to Screen.Height-1 do//y
PrintScrn.Canvas.Pixels[x,y]:=Image1.Canvas.Pixels[x,y];//Цвет точки
end;
Код:
....
ReleaseDc(0, DC); //Уничтожаем контекст!!!
end;
ReleaseDc(0, DC); //Уничтожаем контекст!!!
end;