Delphide Capture Programı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
tuba_e
Üye
Mesajlar: 7
Kayıt: 20 May 2005 12:45

Delphide Capture Programı

Mesaj gönderen tuba_e »

Arkadaşlar merhaba..
Siteye bugün üye oldum ve hemen sizlerden bir konu hakkında fikriniz olup olmadiğini öğrenmek istiyorum.
Ben delphide bir capture programı yapıyorum.masaüstündeki görüntüyü delphideki image nesnesinde gösteriyorum.
Ancak bunu biraz değişik bir şekilde yapmam gerekiyor.image nesnesinde farenin bulunduğu yerin resminin gözükmesi gerekiyor.Yani farenin hareketlerini takip etmesi gerekiyor.
Ama ben bunu bulamadım.
Eğer bir fikriniz bilginiz varsa paylaşırsanız sevinirim... :D
En son tuba_e tarafından 21 May 2005 06:31 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Öncelikle hoşgeldiniz..

İlk etap olarak üyelerimizi forum kurallarını okumaya davet ediyoruz, böyle büyük bir bilgi ortamının en düzenli ve faydalı şekilde yararlanılması için. Lütfen konu başlığını konuyu açıklayıcı bir başlıkla değiştiriniz. Bunu, ilk mesajınızdaki sağ üst köşedeki edit butonu ile yapabiliriniz.

Kolay gelsin..
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Aramıza hoşgeldiniz.

BitBlt Fonksiyonundan yararlanarak basit bir şekilde yapabilirsin.
Mantığı kavrayamazsanız ipuçlarına devam ederiz ;)


Aramızda kalsın Forumda daha önce geçti ;) :ara

Kolay gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

http://delphi.about.com/od/internetintr ... 12004a.htm

bu linkte ScreenThief adında bir program ve açık kodları var , incelemekte fayda var .
tuba_e
Üye
Mesajlar: 7
Kayıt: 20 May 2005 12:45

Mesaj gönderen tuba_e »

Bitblt yi kullanıyorum ve masaüstü image içinde görüntüleniyor.Benim istediğim ise farenin bulunduğu yerleri göstermesi.
Bunun için mouseup mousedown komutlarını kullanmam gerektiği söylendi.Program farenin bulunduğu koordinatları takip edecek böylece.
Bu komutları da kullandım ama olmadı.Ben yanlış birşeyler yapmış olabilirim tabi.
Ayrıca mousemove komutunu da denedim.Ama bir değişiklik olmadı.
Yardımcı olursanız sevinirim...
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Merhaba

İlk olarak bir bmp nesnesi üretelim.

Bmp := TBitMap.Create;

Sonra şuna odaklanalım. Mouse nerede ve mouse un çevresindeki ne kadarlık kısımım Fotosunu çekecez.

100 e 100 lük bir görüntü bana yeter.

Bmp.Witdh := Round(100);
Bmp.Height := Round(100);

Şimdi sıra BitBlt fonksiyonumuzu kullanmaya geldi.

BitBlt(bmp.Canvas.Handle,0,0,100,100,GetWindowDc(mouse.Capture),mouse.CursorPos.X - 50,mouse.CursorPos.y - 50,SRCCOPY);

burada kullandığım mouse.CursorPos.X - 50,mouse.CursorPos.y - 50 bu özellikler mosuse bulunduğu pozisyonu baz aldığı için -50 verdim yani pozisyonu ortalaması için - 50 ye gir dedim.

işte olayımız bu kadar basit şimdi kodumuzu test edelim. boş bir form açalım formumuza 1 adet button ekleyelim ve kodumuzu yapıştıralım.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var BMP: TBitMap;

begin
    BMP:=TBitMap.Create;
    try

        BMP.Width:=Round(100);
        BMP.Height:=Round(100);
        BitBlt(bmp.Canvas.Handle,0,0,100,100,GetWindowDc(mouse.Capture),mouse.CursorPos.X - 50,mouse.CursorPos.y - 50,SRCCOPY);
        BMP.SaveToFile('Husonet.bmp');
    finally
        BMP.Free;
    end;
end;
Projemizi run yapalım
Şimdi mousemuzu fotosunu çekmek istediğimiz ekranın herhangi bir yerine götürüp Space tuşuna basalım. Sonra da resmimizi açıp bakalım.

İşte fotomuz çıkmış. Artık tab ettirebilirsiniz ;). Geri kalan kısmı hayal gücünüze kalmış.

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Jedivcl setinden bunu yapan bir component mevcut.
tuba_e
Üye
Mesajlar: 7
Kayıt: 20 May 2005 12:45

Mesaj gönderen tuba_e »

hüseyin verdiğin kod için çok teşekkür ederim.Gerçekten de program istediğim gibi çalışıyor.Yalnız resmi ayrı bir yerde gösteriyor.
Acaba resmi form içinde bulunan image yada başka bir nesnede göstermesi mümkün mü.:D
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Tabiki gösterebilirsin. Bu senin tam olarak ne yapmak istediğine bağlı sonuçta ressim hdd ye kayıt bırakıyor. Resmin Path ini imaj a verebilirsin.

Kod: Tümünü seç

    Form1.Image1.Picture.LoadFromFile('husonet.bmp');
Bir timer bileşeni ile bu işin üstesinden gelebilirsin...

Kolay Gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
tuba_e
Üye
Mesajlar: 7
Kayıt: 20 May 2005 12:45

Mesaj gönderen tuba_e »

Senin yazdığın kodda kaydettiğimiz yerden alıyor.Ben hiç bir yere kaydetmeden direk olarak image yada başka bir nesnede görüntülenmesini istiyorum.
Mesela şöyle bir program düşünelim.program çalışırken farenin olduğu yerler formda gözüküyor.fareyi gezdirdiğim yerler yani.sonra nerenin resmini istiyorsam onun üstündeyken fareye yada başka birşeye tıklayınca o görüntü formda sabit olarak kalıyor.
Yani ben direk olarak sabitlemesini istemiyorum.
valla senin yazdığın kodlar bence oluyor ama benden ısrarla bu şekilde olması isteniyor.diğerlerini kabul etmiyorlar.Bir çeşit snapshot programı olması gerekiyor delphide.
Bana bu konuda yardımcı olursanız sevinirim...
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

intervali 100 olan bi timera yazın.
@hüsonetin kodundaki gibi dosyaya kaydedeceğinize image e çizeceksiniz resminizi

Kod: Tümünü seç

procedure TForm1.Timer1Timer(Sender: TObject);
var BMP: TBitMap;
begin
    BMP:=TBitMap.Create;
    try

        BMP.Width:=Round(100);
        BMP.Height:=Round(100);
        BitBlt(bmp.Canvas.Handle,0,0,100,100,GetWindowDc(mouse.Capture),mouse.CursorPos.X - 50,mouse.CursorPos.y - 50,SRCCOPY);
        Image1.Canvas.Draw(0,0,BMP);
        //BMP.SaveToFile('Husonet.bmp');
    finally
        BMP.Free;
    end;
end;
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Metincim bravo image çizdirmek hiç aklıma gelmemişti olabileceğini bile düşünmemiştim o yüzden direk path verirsin demiştim arkadaşa.

Teşekkür Ederim...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
tuba_e
Üye
Mesajlar: 7
Kayıt: 20 May 2005 12:45

Mesaj gönderen tuba_e »

arkadaşlar çok teşekkür ederim bana çok yardımcı oldunuz.Yalnız nasıl çalıştığını anlayamadım. biraz açıklama yapar mısınız?
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Neyi Anlayamadınız? :roll: Deneme yaptınızmı? :roll: Sorun Ne ? :roll:

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
tuba_e
Üye
Mesajlar: 7
Kayıt: 20 May 2005 12:45

Mesaj gönderen tuba_e »

deneme yaptım program çalışıyor. ben çalışma mantığını öğrenmek istiyorum. neyi niçin kullandık gibi. mesela fare hareketlerini nasıl takip ediyor
Cevapla