merhaba...
Forumda uzun zamandır dolaşıyorum fakat aklımdaki sorunun cevabını bulamadım..
Sorum şu:
bmp := Tbitmap.Create;
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
image1.Width := Screen.Width;
image1.Height := Screen.Height;
dc := GetWindowDc(GetDesktopWindow);
Bitblt(bmp.canvas.handle,0,0,Screen.Width,Screen.height,dc,0,0,srccopy);
image1.Canvas.Draw(0,0,bmp);
releasedc(getdesktopwindow,dc);
bmp.SaveToFile('c:\deneme.bmp');
bmp.Free;
bu tip bir kodla ekran görüntüsünü image'a ordanda görüldüğü gibi c:\deneme.bmp klasörüne kaydediyorum...bunu timer kontrolüyle her 5 dakikada bir yapıyorum..Buraya kadar hallettim ama sizinde aklına geliceği gibi her 5 dakikada yeni kayıt önceki deneme.bmp'nin üzerine kaydediyor...Yani bu dosya ismi için nasıl random bir değer kullanabilirim..Mesela ben şöle düşündüm.her kayıt öncesi sistem saatinind dakikasını alıp bunu dosya ismine eklerse her dosyanın ismi farklı olur..Ama işte bunu dosya ismine ne şekilde ekleyebileceğimi çözemedim..
Şimdiden teşekkürler,,,
Random dosya adı
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Kod: Tümünü seç
function TForm1.GetFileName:string;
var
yil, ay, gun, saat, dakika, saniye, salise : Word;
path:string;
begin
DecodeDateTime ( Now, yil, ay, gun, saat, dakika, saniye, salise);
path:=JvComputerInfoEx1.Folders.DesktopDirectory;
Result:= Format('%s\MyDesktop_%d_%d_%d_%d_%d_%d_%d.JPG',[path,gun,ay,yil,saat,dakika,saniye,salise]);
end;
isterseniz path := kısmını değiştirin
.-.-.-.-.-.-.-. ^_^
-
- Üye
- Mesajlar: 8
- Kayıt: 09 Şub 2005 05:59
saol mege..
yalnız
if w=300 then begin
bmp := Tbitmap.Create;
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
image1.Width := Screen.Width;
image1.Height := Screen.Height;
dc := GetWindowDc(GetDesktopWindow);
Bitblt(bmp.canvas.handle,0,0,Screen.Width,Screen.height,dc,0,0,srccopy);
image1.Canvas.Draw(0,0,bmp);
releasedc(getdesktopwindow,dc);
bmp.SaveToFile('c:\deneme.bmp');
bmp.Free;
if w=300 then w:=1
verdiğin kodu bu koda monte etmem mümkünmü?Bi fikir verebilirmisin..aynı şekilde c:\deneme ye .bmp uzantılı kaydedicek şekilde?
yalnız
if w=300 then begin
bmp := Tbitmap.Create;
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
image1.Width := Screen.Width;
image1.Height := Screen.Height;
dc := GetWindowDc(GetDesktopWindow);
Bitblt(bmp.canvas.handle,0,0,Screen.Width,Screen.height,dc,0,0,srccopy);
image1.Canvas.Draw(0,0,bmp);
releasedc(getdesktopwindow,dc);
bmp.SaveToFile('c:\deneme.bmp');
bmp.Free;
if w=300 then w:=1
verdiğin kodu bu koda monte etmem mümkünmü?Bi fikir verebilirmisin..aynı şekilde c:\deneme ye .bmp uzantılı kaydedicek şekilde?
Bu da dağişik bir yaklaşım. Genelde MS güncelleme dosyalarını hdd roota açarken galiba bu tip birşey kullanıyor.
Kod: Tümünü seç
function TForm1.DosyaAdi: String;
const
Uzunluk = 5;
var
i : integer;
S : String;
begin
repeat
S := '';
for i := 1 to Uzunluk do
S := S + Chr(Random(26)+65) + Chr(Random(26)+97);
until not FileExists(S);
Result := S + '.bmp';
end;
anlerduran yazdı: bmp.SaveToFile(DosyaAdi);
Aslında temp file oluşturmak için bir Windows API mevcut. Örneklemek için bir function oluşturdum. Funct. geriye TEMP klasörünüzde prefix'iniz ile başlayan rastgele isimli bir dosya yaratıyor ve adını döndürüyor.
GetTempFile('TST') dediğinizde TEMP klasörünüz nereye tanımlıysa oraya TST0A22.TMP gibi bir dosya yaratacaktır ve ismini geri döndürecektir.
Kod: Tümünü seç
// Prefix'in ilk 3 karakteri dikkate alınır.
function GetTempFile(const APrefix: string = ''): string;
var
TempPath: string;
TempPathLength: Integer;
begin
SetLength(TempPath, MAX_PATH);
TempPathLength:= GetTempPath(MAX_PATH, PChar(TempPath));
if TempPathLength = 0 then
raise Exception.Create('Geçici dosya yolu alınamadı');
// TempPath dönüşte null karakter eklenmemiş halde döner
// TempPath boyutunu yeniden ayarlayalım
SetLength(TempPath, TempPathLength);
// Result boyutunu MAX_PATH yapalım
SetLength(Result, MAX_PATH);
// Geçici dosya oluşturulur.
if GetTempFileName(PChar(TempPath), PChar(APrefix), 0, @Result[1]) = 0 then
raise Exception.Create('Geçici dosya oluşturulamadı');
Result:= string(PChar(Result));
end;
-
- Üye
- Mesajlar: 8
- Kayıt: 09 Şub 2005 05:59
...
Yardımlarınız için teşekkür ederim...Şimdi deniyorum umarım işe yarar.