Witam potrzebuje informacji jak napisać kod który będzie robił screnna co 3 minuty od nacisnięcia buttonu i zapisywał każdy screen w folderze (Każdy screen o innej nazwie).
Z góry dziękuję za pomoc

- Rejestracja:ponad 22 lata
- Ostatnio:ponad 9 lat
- Postów:1668
wR napisał(a)
Witam potrzebuje informacji jak napisać kod który będzie robił screnna co 3 minuty od nacisnięcia buttonu i zapisywał każdy screen w folderze (Każdy screen o innej nazwie).
Z góry dziękuję za pomoc
temat nadaje sie do dzialu Newbie.
- Jak zrobić zrzut z ekranu
- Komponent ttimer o intervale 3601000
- w buttonie timer1.enabled:=true;
- zeby screeny mialy odpowiednie nazy plikow uzyj najlepiej FormatDateTime() oraz "Now" ktore zraca aktualny czas.
google+pomoc delphi i masz to napisac sam.
Masz tu przetestowany działający kod:
pamiętaj aby do dodać do: uses JPEG;
///////////////////////////////////////////////////////////////////////////////////////////////////////
//Kompilator: Delphi 7
*UWAGA funkcja wymaga: uses JPEG; *A to jesli chcemy zastosowac format JPG.
//Versja 1.2 29.08.2007
//Funkcja wykonuje zrzut pulpitu do pliku w formacie *.JPG
//WEJSCIE:
//(PathAndFileName) <-- tu podajemy pelna sciezke dojscia wraz z nazwa pliku
//do jakiego ma zostac zapisana aktualna zawartosc ekranu, zapisany obraz
//jest w postaci formatu (JPG) o 80% kompresji.
//UWAGA: Jezeli jako nazwe podamy pusty ciag '' to wtedy funkcja automatycznie
//tworzy sciezke dojscia do systemowego katalogu TEMP i tam zapisuje plik
//obrazu pod losowo wygenerowana nazwa z rozszerzeniem .JPG cala sciezka dojscia
//wraz z nazwa i rozszerzeniem zwracana jest w zmiennej (PathAndFileName) w
//przypadku dokonania udanego zapisu tego pliku.
//WYJSCIE:
//funkcja zwraca TRUE jesli zapis wykonal sie prawidlowo a w zmiennej (PathAndFileName)
//mamy wtedy pelna sciezke dojscia wraz z nazwa i rozszezeniem do zapisanego pliku.
//jesli funkcja zwroci FALSE to oznacza ,ze plik obrazu nie zostal zapisany na dysku
//a zmienna (PathAndFileName) zawiera wtedy pusty ciag niezaleznie od wczesniejszej wartosci!!!
function ZrzutEkranu(var PathAndFileName: string): boolean;
type
TPathBuffer = array[0..MAX_PATH-1] of Char;
var
Buffer: TPathBuffer;
ObrazEkranu: TCanvas;
Bitmapa: TBitmap;//To dla formatu BMP !!!!
ObrazJPG: TJPEGImage;//To dla formatu JPEG !!!!
begin
ObrazEkranu:=nil;
Bitmapa:=NIL;
ObrazJPG:=NIL;
Result:=False;
try
//Jesli nie podano sciezki oraz nazwy pliku tworzymy wlasna w systemowym katalogu TEMP
if PathAndFileName = '' then
begin
//Tu ustalamy sciezke do systemowego katalogu TEMP i zapisujemy w Buffer
if not Boolean(GetTempPath(SizeOf(Buffer), Buffer)) then exit;
//Teraz do tej samej tablicy Buffer zapisujemy juz sciezke i nazwe pliku.
if GetTempFileName (Buffer,'',0,Buffer) <> 0 then
begin
PathAndFileName:=Buffer;
if FileExists(PathAndFileName) then
if not DeleteFile(PathAndFileName) then exit;
//Ustalamy nowe rozserzenie dla pliku.
PathAndFileName:=ChangeFileExt(PathAndFileName,'.jpg');
end
else
exit; //wyjscie jesli nie udalo sie utworzenie unikatowej nazwy
end;
//Jesli podana sciezka (z wylaczeniem nazwy pliku) nie istnieje to wyjscie.
if not DirectoryExists(ExtractFileDir(PathAndFileName)) then exit;
//Jesli nazwa pliku nie istnieje to wyjscie.
if ExtractFileName(PathAndFileName) = '' then exit;
try
ObrazEkranu:=TCanvas.Create;
try
ObrazEkranu.Handle:=GetWindowDC(GetDesktopWindow); //Pobieramy uchwyt HDC do Pulpitu Windows.
Bitmapa:=TBitmap.Create;
Bitmapa.Width := Screen.Width;
Bitmapa.Height := Screen.Height;
{ kopiowanie }
Bitmapa.Canvas.CopyRect (Rect(0, 0, Screen.Width, Screen.Height),ObrazEkranu,Rect (0, 0, Screen.Width, Screen.Height));
try
ObrazJPG:=TJPEGImage.Create;//Dla formatu JPG !!!
*ObrazJPG.Grayscale:=True;*A tak ustawiamy obrazek czarno-bialy!!!
ObrazJPG.Assign(Bitmapa);
//Tu dodatkowo ustawiamy wielkosc kompresji obrazka JPG
ObrazJPG.CompressionQuality:=80; //80% - najbardziej optymalna skutecznosc kompresji
ObrazJPG.Compress;
ObrazJPG.SaveToFile(PathAndFileName); //Zapisujemy obrazek w formacie JPG
Result:=True;
finally
ObrazJPG.Free;
end;
finally
Bitmapa.Free;
end;
finally
ObrazEkranu.Free;
end;
finally
if Result = False then PathAndFileName:='';
end;
end;
///////////////////////////////////////////////////////////////////////////////////////////////////////






- Rejestracja:ponad 22 lata
- Ostatnio:ponad 9 lat
- Postów:1668

- Rejestracja:ponad 22 lata
- Ostatnio:ponad 9 lat
- Postów:1668
http://lmgtfy.com/?q=delphi+rar
http://lmgtfy.com/?q=delphi+zip
z zipem jest latwiej.
zerknij tez na www.torry.net i poszukaj komponentow.
//a folderu sie nie konwertuje tylko kompresuje do pliku.
http://www.componentace.com/download/download.php?editionid=12
chciałbym wiedzieć czy to jest dobry component do tworzenia zipów :) z góry dzięki za pomoc.

- Rejestracja:około 22 lata
- Ostatnio:10 miesięcy
- Lokalizacja:Katowice
ZipForge to na pewno jeden z najbardziej znanych komponentów tego typu.
Bardzo dobrze udokumentowany, a jeśli wolisz uczyć się na oficjalnych demach, to w paczce znajdziesz ich kilkanaście.
Musisz tylko pamiętać o tym, że jeśli chcesz udostępnić swój program innym osobom (czyli też użyć go na innych komputerach), wtedy łamiesz licencję darmowej edycji ZipForge.
Za to kiepsko widzę pomysł wysyłania mailem screenów z gry. Żaden packer nie spakuje Ci plików jpg do dużo mniejszych rozmiarów, a co jeśli ktoś miał grę włączoną przez np 10 godzin ? Dodaj do tego więcej niż jednego użytkownika gry i w rezultacie dostaniesz maile wielkości dziesiątek megabajtów dziennie (mnożone przez liczbę użytkowników). Nie wspominam nawet o obciążaniu uploadu na komputerach wysyłających takie maile. Nie łatwiej sprawdzać listę procesów i okien uruchomionych w systemie i tylko w przypadku trafienia wysyłać informację tekstową o tym fakcie do administracji ? (niekoniecznie mailem, można to zrobić np. przez sockety - byłoby to natychmiastowe, w pełni konfigurowalne powiadamianie administratora o wykryciach).

- Rejestracja:około 17 lat
- Ostatnio:około 3 lata
- Lokalizacja:Szczecin
- Postów:4191
No to i tak tych screenów będzie za dużo do sprawnego uploadu znając możliwości typowych polskich łączy. A lepiej to rozwiąż tak, jak napisał
poprzednik, sprawdzając listę porcesow pod kątem niedozwolonych programów i informuj admina. Natomiast inne moduły do obsługi zipa także
z użyciem dllek i nie tylko są dostepne na www.torry.net wraz z przykładami. Nie wczytywałem się jednak w ich licencje czy są w pełni darmoe.

- Rejestracja:około 22 lata
- Ostatnio:10 miesięcy
- Lokalizacja:Katowice
wR napisał(a)
mam pytanie jak uzyc tego zipforge zeby konkretny plik zipował.
To już jest straszne lenistwo, biorąc pod uwagę, że ten komponent zawiera nie tylko pokaźny manual, ale też dema, w których jest wszystko nie tylko wypisane, ale też skomentowane !
No ale, skoro sam nie potrafisz otworzyć pliku .pas dema, to wkleję Ci kawałek kodu:
with Archiver do
begin
FileName := 'C:\TEST\test.zip'; //Set archive name
OpenArchive(fmCreate); //Create a new archive file
BaseDir := 'C:\SOURCE_FOLDER'; //Set path to folder with some text files to BaseDir
AddFiles('*.*'); //Add all files and directories from 'C:\SOURCE_FOLDER' to the archive
CloseArchive; //Close the archive
end;
W manualu/demach wszystko jest na tej zasadzie opisane, wraz z komentarzem !
EDIT: Może lepiej jeszcze dopisać, że parametrem AddFiles jest maska plików, w tym wypadku ., która oznacza wszystkie pliki. Jeśli chcesz dodać konkretne pliki modyfikujesz maskę - przykładowo *.jpg doda wszystkie pliki jpg, a 'nazwa.jpg' doda plik 'nazwa.jpg'. Dla mnie to oczywistość, ale tak sobie pomyślałem, że możesz z tym mieć kolejny problem...
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.