Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

ScreenShot экрана   Найти похожие ветки 

 
ElRaki   (2004-08-09 21:15) [0]

Не знает ли кто, как сделать скриншот экрана и сохранить его в файл? Только без манипуляций с буфером. Или вообще алгоритм сохранения Hbitmap в нормальном bmp. Заранее спасибо.


 
AntiTroyan1   (2004-08-09 21:33) [1]

program Project1;

uses
Windows,SysUtils, Graphics,jpeg;

 function ScreenWidth:Integer;
begin
 Result := GetSystemMetrics(SM_CXSCREEN);
end;
function ScreenHeight:Integer;
begin
 Result := GetSystemMetrics(SM_CYSCREEN);
end;

Var  bmp1: TBitmap; jpg2:TJpegImage;FileName:String;
begin
if ParamCount<1 then
begin
FileName:=Paramstr(0);
delete(FileName,Length(FileName)-3,4);
FileName:=FileName+".jpg"
end else
FileName:=Paramstr(1);

bmp1 := TBitmap.Create;
jpg2 :=  TJpegImage.Create;
bmp1.Height := ScreenHeight;
bmp1.Width  := ScreenWidth;
BitBlt(bmp1.Canvas.Handle, 0, 0, ScreenWidth, ScreenHeight, GetDC(GetDesktopWindow), 0, 0, SRCCopy);
jpg2.Assign(bmp1);
if ParamCount<>2 then
jpg2.CompressionQuality:=57 else
jpg2.CompressionQuality:=StrToInt(Paramstr(2));

jpg2.Compress;
jpg2.SaveToFile(FileName);
bmp1.Free;  jpg2.Free;
end.


 
AntiTroyan1   (2004-08-09 21:35) [2]

а вот и для bmp

program Project1;

uses
Windows,Kol;
Var
bmp: PBitmap;
FileName:string;
{$R *.res}

function ScreenWidth:Integer;
begin
 Result := GetSystemMetrics(SM_CXSCREEN);
end;
function ScreenHeight:Integer;
begin
 Result := GetSystemMetrics(SM_CYSCREEN);
end;

begin
if ParamCount<>1 then
begin
FileName:=Paramstr(0);
delete(FileName,Length(FileName)-3,4);
FileName:=FileName+".bmp"
end else
FileName:=Paramstr(1);
bmp:=NewBitmap(0,0);  
bmp.Height := ScreenHeight;
bmp.Width  := ScreenWidth;
BitBlt(bmp.Canvas.Handle, 0, 0, ScreenWidth, ScreenHeight, GetDC(GetDesktopWindow), 0, 0, SRCCopy);
bmp.SaveToFile(FileName);
bmp.Free;
end.


 
AntiTroyan1   (2004-08-09 21:36) [3]

- во втором варианте программа имеет размер (после сжатия UPX"ом) около 9 кб (!)


 
VMcL ©   (2004-08-09 23:16) [4]

>>AntiTroyan1  (09.08.04 21:36) [3]

>во втором варианте программа имеет размер (после сжатия UPX"ом) около 9 кб (!)

Wow.


 
ElRaki   (2004-08-09 23:33) [5]

Спасибо за код. Если честно, я пообещал написать прогу на чистом Api. KOL в мои планы не входил. Но видимо придется все-таки нарушить условия, я уже 3 дня клепаю код на WinApi. Безуспешно.


 
Vetek_2   (2004-08-10 13:46) [6]

Сейчас "модно" писать программы с использованием Кол, так как это "Супер" - библиотека, в ней есть почти всё, и программы получаются небольшие по размеру :)
- ещё есть отличное дополнение к кол - библиотека AVL, но я не знаю, где достать её новую версию ..
- Я сам всегда пишу программы с использованием KOL+AVL получается очень здорово :)


 
Delphi5.01 ©   (2004-08-10 14:11) [7]

Na shot KOL, ia programu nakatal po otsilke SMS soobshenii na KOL. Skaju chestno ochen klovaia biblioteka no .... tolko dla povishenia znani. A tak ochen slojno perehodit s VCL na KOL esli k primeru net znani v idee sozdania komponentov i samoe glavnoe (u mena etot nedostatok bil) Object Paskal.


 
OSokin ©   (2004-08-10 20:22) [8]

Что, не можешь??? Просто возьми, создай канвас, поставь ему дц 0 и потом как хочешь сохраняй в файл.



Страницы: 1 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.072 c
1-1094563054
debuger
2004-09-07 17:17
2004.09.26
Отладка.


1-1095060786
VladimirES
2004-09-13 11:33
2004.09.26
Создать файл Excel я не используя ExcelApplication.


14-1094231085
Кирилл
2004-09-03 21:04
2004.09.26
Смертная казнь


14-1094542630
Lex
2004-09-07 11:37
2004.09.26
Есть ли тут кто из Томска?


3-1093618349
ceval
2004-08-27 18:52
2004.09.26
Нужно поле mr вывести в DBText