Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
14-3047
DDDeN
2003-05-13 13:51
2003.06.02
DelphiX для Delphi 6


1-2996
veb
2003-05-21 13:56
2003.06.02
Событие формы


14-3129
гончий
2003-05-14 16:20
2003.06.02
Кто-нибудь реально использует от TurboDb?


4-3202
Пубертанец
2003-04-03 14:22
2003.06.02
Помогите разобраться с OpenFileMapping


14-3062
drin
2003-05-15 02:38
2003.06.02
Вопрос к знатокам Linux и PHP(проблемы с правами доступа)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский