Screen Capture yapýnca pc neden kitleniyor
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Screen Capture yapýnca pc neden kitleniyor
SLMs....
delphide basit bir capture yapýnca kýsa süreli bilgisayarý kitliyor bu normal bir durum mu? Fakat profesyonel olarak hazýrlanmýþ programlar var örneðin bilgisayarda ne yapýlýp yapýlmadýðý tespit eden yazýlýmlar örneðin; net nanny,contentprotect,CYBERsitter gibi bu programlarýn screen capture özelliði var çok gizli çalýþýyorlar ve bilgisayarý hiç kitlemiyor capture yapýnca bunun sebebi nedir? Acaba farklý bir program ile yazýldýðý için mi?örneðin c/c++ gibi....
Saygýlar,
delphide basit bir capture yapýnca kýsa süreli bilgisayarý kitliyor bu normal bir durum mu? Fakat profesyonel olarak hazýrlanmýþ programlar var örneðin bilgisayarda ne yapýlýp yapýlmadýðý tespit eden yazýlýmlar örneðin; net nanny,contentprotect,CYBERsitter gibi bu programlarýn screen capture özelliði var çok gizli çalýþýyorlar ve bilgisayarý hiç kitlemiyor capture yapýnca bunun sebebi nedir? Acaba farklý bir program ile yazýldýðý için mi?örneðin c/c++ gibi....
Saygýlar,
kod ile bir alakasý olduðunu hiç sanmýyorum kardeþim mesela düþün formda sadece bir buton var ve butona basýnca capture kodunu iþletiyorum sadece baþka hiçi biþi yok sonra tam capture yaparken kýsa süreli bilgisayar kitleniyor ama ço kýsa 1-2 sn gibi.....vedatkaba yazdı:Hatayý dillerde deðilde yazdýðýnýz kodlarda sizteminizde aramak en doðru yol bence.kodlarýnýzý görelim bakalým ona göre bir þey diyelim.kolay gelsin.

screen capture+kod
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
var
DCDesk: HDC;
begin
DCDesk:=GetWindowDC(GetDesktopWindow);
BitBlt(Image1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);
ReleaseDC(GetDesktopWindow, DCDesk);
end;
Kod: Tümünü seç
var width, height : word;
desktop : HDC;
begin
width := Screen.Width;
height := Screen.Height;
desktop := GetWindowDC(GetDesktopWindow);
Image1.Picture.Bitmap.Width := width;
Image1.Picture.Bitmap.Height := height;
BitBlt( Image1.Picture.Bitmap.Canvas.Handle, 0, 0,
width, height, desktop, 0, 0, SRCCOPY );
end;
Kodunda yanlışlık yok muhtemelen ekranda bir problem var gibi tam emin değilim ama yukarıdaki kodla da denersen sonuca göre bakarız.birde ekranın çözünürlüğünü düşür öle dene fark olacakmı.kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Öncelikle Capture olayını OnCreate den formun OnShow una almanı tavsiye ederim. Burada hata vermemesine rağmen form create edilirken diğer nesneler create edilmediğinden bir bekleme ve gecikmeye sebep olabilir
Ya da bir button la programı çalıştırdıktan sonra kontrollu olarak yapmanı tavsiye edebilirim.. sorun çözülmezse donanımsal yada sistemdeki bir programdan kaynaklanıyor olabilir..
Ya da bir button la programı çalıştırdıktan sonra kontrollu olarak yapmanı tavsiye edebilirim.. sorun çözülmezse donanımsal yada sistemdeki bir programdan kaynaklanıyor olabilir..

Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
-
- Üye
- Mesajlar: 46
- Kayıt: 25 May 2005 09:08
- Konum: izmir
Bunu kaldır:
ReleaseDC(GetDesktopWindow, DCDesk);
Desktop un DC sini sen mi yarattın ki onu serbest bırakıyorsun
DCDesk bir handle dır, yani oluşturulan DC lerin (device context) hangisi oldugunu kullanılacak fonksiyonlarda seçmek için kullanılır. DC yi sen yarattıysan, sen bırakırsın. Yok dışarıdan ödünç aldıysan hiç karışmazsın.
Bu alttaki iki satır yeterli gelir:
DCDesk:=GetWindowDC(GetDesktopWindow);
BitBlt(Image1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);
ReleaseDC(GetDesktopWindow, DCDesk);
Desktop un DC sini sen mi yarattın ki onu serbest bırakıyorsun

DCDesk bir handle dır, yani oluşturulan DC lerin (device context) hangisi oldugunu kullanılacak fonksiyonlarda seçmek için kullanılır. DC yi sen yarattıysan, sen bırakırsın. Yok dışarıdan ödünç aldıysan hiç karışmazsın.
Bu alttaki iki satır yeterli gelir:
DCDesk:=GetWindowDC(GetDesktopWindow);
BitBlt(Image1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,DCDesk, 0, 0,SRCCOPY);