Форум: "Основная";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
ВнизВопрос про размеры. Найти похожие ветки
← →
GenezZ (2003-05-17 03:53) [0]Просьба не бить сильно, я только учусь:-))
Написал маленькую программку, в качестве испытания, для получения скриншота в JPEG, и чтоб не спрашивало имя файла, оно берется как кол-во миллисекунд..
собственно вот:
uses
Windows, SysUtils, Graphics, Forms, JPEG;
var
Bitmap: TBitmap;
Tit: string;
var
jpg: TJpegImage;
begin
jpg:= TJpegImage.Create;
Tit := IntToStr(GetTickCount);
Bitmap:=TBitmap.Create;
Bitmap.Width := Screen.Width;
Bitmap.Height:= Screen.Height;
BitBlt(Bitmap.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,
GetDC(GetDesktopWindow), 0, 0, SRCCopy);
jpg.Assign( Bitmap );
jpg.SaveToFile(Tit+".JPG");
end.
прога работает, почти как надо..
но!, как сделать чтобы:
1.как и чем скомпилировать, чтобы не было окон,(в том числе дос)
2. размер в 400 кб.. ет слишком для такой проги,
как и чем можно уменьшить?
← →
Anatoly Podgoretsky (2003-05-17 07:42) [1]Для начала попробуй убрать Forms
← →
Думкин (2003-05-17 07:49) [2]Объекты освободятся конечно - но лучше это сделать самому.
← →
Думкин (2003-05-17 08:05) [3]И GetDC - там же. Освободить надо.
← →
Spartak (2003-05-17 13:19) [4]Довольно трудно сделать программу для снития скриншотов без модуля
forms ! Почему ? попробуйте сами ....
← →
Wizard_Ex (2003-05-17 13:46) [5]а почему?
← →
Palladin (2003-05-17 14:24) [6]
> Spartak © (17.05.03 13:19)
парень, ты о чем?
← →
e!dGe. (2003-05-17 21:39) [7]Автору вопроса:
1. весь твой код можно поместить в модуль проекты
2. разуметса, убери формз из юзесов..)
← →
GenezZ (2003-05-18 03:15) [8]2ВСЕм
при убирании FORMS ипоследуещей проверке, дельфи ругается:
[Error] Project1.dpr(15): Undeclared identifier: "Screen"
[Error] Project1.dpr(16): Missing operator or semicolon
[Error] Project1.dpr(17): Not enough actual parameters
вот..
← →
e!dGe. (2003-05-18 08:01) [9]program ScreenShooter;
uses WIndows, SYsUtils, GRaphics, JPeg;
type TScreenRec = packed record
Width, Height: Integer;
DC: Cardinal;
end;
function SaveScreenShot: boolean;
var Bitmap: TBitmap;
Tit : string;
Screen: TScreenRec;
begin
Screen.Width := GetSystemMetrics(SM_CXSCREEN);
Screen.Height := GetSystemMetrics(SM_CYSCREEN);
Screen.DC := GetDC(HWND_DESKTOP);
Bitmap:=TBitmap.Create;
with Screen do
try
Bitmap.Width := Width;
Bitmap.Height:= Height;
BitBlt(Bitmap.Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCopy);
with TJpegImage.Create do
try
Assign(Bitmap);
Tit := "F:\"+ IntToStr(GetTickCount)+".JPG";
SaveToFile(Tit);
finally
Free; {TJpegImage уже не нужен - удаляем его из памяти}
end;
finally
Result := FileExists(Tit);
ReleaseDC(HWND_DESKTOP,DC); {Все ресурсы, полученные в результате действий программы,}
Bitmap.Free; {должны освобождаться после использования, причем всегда}
end;
end;
begin
if MessageBox(0,"Need Screenshot?"#13#10,"Screen Shooter 1.1",MB_ICONQUESTION or MB_YESNO) = ID_YES
then
begin
if SaveScreenShot
then
MessageBox(0,"Done!","Screen Shooter 1.1",MB_ICONINFORMATION)
else
MessageBox(0,"An error occurred!","Screen Shooter 1.1",MB_ICONERROR)
end;
end.
← →
e!dGe. (2003-05-18 08:07) [10]
begin
Sleep(50); // добавь паузу, а то MessageBox не успевает спрятаться ..)
Screen.Width := GetSystemMetrics(SM_CXSCREEN);
← →
Tano (2003-05-18 15:11) [11]Про скриншоты ничего не скажу, а вот размер:
Если делаешь обычный exe-шник (автономный) - меньше не выйдет, даже если отключить и выбросить все, что кажется ненужным.
Уменьшить размер EXE можно только компиляцией "Build with rintime packages" - флажок в свойствах проекта>Packages, НО это выгодно только, если ты на один комп часто поставляешь обновленную версию своей программы, потому что прийдется поставить в комплекте с прогой .bpl файлы, перечисленные в окошке Project>Information...> [Packages Used], а их размер велик (для простого проекта - суммарно ~2.2Mb, правда упаковываются RARом примерно до 30%).
← →
Думкин (2003-05-19 04:51) [12]> Tano © (18.05.03 15:11)
Можно и очень даже без этого.
Код приведенный автором - по его утверждению около 400.
После удаления Forms - у меня стало 238(Д6)
А если уж - ну очень охота - то и это не предел.
← →
MetalFan (2003-05-19 10:05) [13]UPX?
← →
GenezZ (2003-05-19 22:43) [14]Удалено модератором
Примечание: Задай свой вопрос в своём топике
← →
Думкин (2003-05-20 05:22) [15]> GenezZ © (19.05.03 22:43)
Это дает то, что ты это видишь и помнишь, и нигде это не приведет у тебя к ошибкам.
Меньше можно - но тогда копать надо глыбже.
Отключи любой юнит и воспроизведи его функциональность у себя.
Получишь маленький код и 2 дня гемороя. Выбор за тобой.
← →
GenezZ (2003-05-20 14:17) [16]>Думкин
Спасиб.
← →
лёха (2003-05-20 15:26) [17]Кстати ещё можно уменьшить почитаь про Kol библиотеки!!!
← →
лёха (2003-05-20 15:39) [18]а если на то пошло то http://bonanzas.rinet.ru/rindex.htm там и пример найти пожешь по снятию скриншотов весом в 90 кб
http://bonanzas.rinet.ru/GrabScreen.zip
Сидит в трее, и по одному щелчку позволяет ограбить с экрана прямоугольный регион, окно или весь экран и сохранить в формате .bmp, .jpg или .png.
Автор: Кладов Владимир , 2002
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.014 c