Ekran Görüntüsü - Farklı Sorun

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
destiny24
Üye
Mesajlar: 131
Kayıt: 22 Tem 2010 09:42

Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen destiny24 »

Merhaba Arkadaşlar,

Delphi XE2 Kullanarak Aşağıdaki Linklerde Örneklerden birini kullanarak Ekran Görüntüsünü başarılı olarak alıyordum.Ekran Görüntüsü aldığım esnada bilgisayardaki bir oyun açık ve bu oyunun ekran görüntüsünü kayıt ediyorum.
Şimdi şöyle bir sorun var ben bu görüntü alma işini uzun zamandır başarı ile yapıyordum ancak oyun bazı güncellemeler yaptı ve bundan sonra oyun ekranda iken benim metodlarım oyunun ekran görüntüsünü vermiyor.Sanki hiç oyun açık değilmiş gibi
masaüstü'nün resmini kayıt ediyor.Oyun tam ekran modunda iken oluyor bu pencere moduna geçtiğinde sorun yine yok.

Nasıl bir şey yapılmış olabilir acaba.Ben nasıl tekrardan oyun açıkken ekran görüntüsü resmini alabilirim.?

http://delphi.about.com/od/adptips1999/ ... enshot.htm
http://delphi.about.com/od/adptips2006/ ... active.htm
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen sabanakman »

Bir ihtimal oyun programı birden fazla monitör varmış gibi ayrı ekran oluşturup, 2. masa üstünde oyun çalıştırıyorsa ve sizin programdan ilk masa üstünün resmi çekiliyorsa böyle bir etki oluşabilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen G.Arkas »

1 - Stream ' i temizle
2 - Aktif olan pencerenin görüntüsünü almaya çalış. Google da örnekler var minimize bir ekranın bile san ki maximize imiş gibi görüntüsünü alabilirsin bu mümkündür.
Resim
destiny24
Üye
Mesajlar: 131
Kayıt: 22 Tem 2010 09:42

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen destiny24 »

aktif pencerenin ekran görüntüsünü almaya çalıştım o da olmadı.
Stream'a temizlemekle nasıl olacak ?


Ayrıca 2. masaüstü'nün görüntüsünü nasıl alıcam öyle bir şey olmuş olsa bile.
Kullanıcı avatarı
quadr
Üye
Mesajlar: 69
Kayıt: 21 Haz 2003 10:12
İletişim:

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen quadr »

Alt+Printscreen yapınca görüntü alabiliyormusunuz ?

Ayakkabıyı sefaletten
Çok sonraları tanıdım
Öyle ufuklarda mı olurmuş Allah'ım
Giyer giyer koşardım
Toprağın dostluğundan
Oyuncaklar yaptım çamurdan
Tenimin rengini aldım topraktan
Sen bakma esmerliğim sonradan...

http://www.tcct.us
destiny24
Üye
Mesajlar: 131
Kayıt: 22 Tem 2010 09:42

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen destiny24 »

hayır vermiyor.Aşağıdaki metod ile denedim 2.ve 3. resimler full siyah çıkıyor diğerleri masaüstünün resmini veriyor


Kod: Tümünü seç

procedure TForm2.GetScreenShot(shotType: TScreenShotType; var img: TJpegImage);
var
  w, h: integer;
  DC: HDC;
  hWin: Cardinal;
  r: TRect;
  tmpBmp: TBitmap;
begin
  hWin := 0;
  case shotType of
    sstActiveWindow:
      begin
        // only the active window
        hWin := GetForegroundWindow;
        DC := GetWindowDC(hWin);
        GetWindowRect(hWin, r);
        w := r.Right - r.Left;
        h := r.Bottom - r.Top;
      end; // sstActiveWindow
    sstActiveClientArea:
      begin
        // only the active client area (active window minus title bars)
        hWin := GetForegroundWindow;
        DC := GetDC(hWin);
        GetWindowRect(hWin, r);
        w := r.Right - r.Left;
        h := r.Bottom - r.Top;
      end; // sstActiveClientArea
    sstPrimaryMonitor:
      begin
        // only the primary monitor.  If 1 monitor, same as sstDesktop.
        hWin := GetDesktopWindow;
        DC := GetDC(hWin);
        w := GetDeviceCaps(DC, HORZRES);
        h := GetDeviceCaps(DC, VERTRES);
      end; // sstPrimaryMonitor
    sstDesktop:
      begin
        // ENTIRE desktop (all monitors)
        DC := GetDC(GetDesktopWindow);
        w := Screen.DesktopWidth;
        h := Screen.DesktopHeight;
      end; // sstDesktop
  else
    begin
      Exit;
    end; // case else
  end; // case

  // convert to jpg
  tmpBmp := TBitmap.Create;
  try
    tmpBmp.Width := w;
    tmpBmp.Height := h;
    BitBlt(tmpBmp.Canvas.Handle, 0, 0, tmpBmp.Width, tmpBmp.Height, DC, 0,
      0, SRCCOPY);
    img.Assign(tmpBmp);
  finally
    ReleaseDC(hWin, DC);
    FreeAndNil(tmpBmp);
  end; // try-finally
end;
destiny24
Üye
Mesajlar: 131
Kayıt: 22 Tem 2010 09:42

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen destiny24 »

oyun açıkken monitör count'unu aldım 1 geldi.fazladan monitörde oluşturmamış.Yanlız şöyle bir durum var ekran görüntüsü almak için oyunda bir kısayol var.F8 e basınca mesela kendi screenshot alıyor.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen mkysoft »

sanırım oyun direct draw yada direct x kullanıyor. bu sistemlerden resim çekmek için dahha farklı yöntemler var, onları deneyiniz.
destiny24
Üye
Mesajlar: 131
Kayıt: 22 Tem 2010 09:42

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen destiny24 »

mesela nasıl bir yöntem.nette pek bir şey bulamadım.Hangi konuları araştırmam gerektiğini söyleyebilir misiniz.?
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen G.Arkas »

Resim
destiny24
Üye
Mesajlar: 131
Kayıt: 22 Tem 2010 09:42

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen destiny24 »

Vallahi ne yalan söyliyeyim hiç bir şey anlamadım.anlamaya çalıştıklarımı indirdim hiç bir şey yapamadım.ne kurabildim ne kullanabildim.
Hangisini indirmek gerekiyor .?
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen mkysoft »

Zaten biraz karmaşık bir konu. Öncelikle direct X üzerine bir kaç metin okumanızı öneririm. Direct X'den görüntü yakalamak zor bir iştir. Verilen linkteki direct X SDK'ları Direct X destekli grafik nesneleri yaratmanızı sağlar. Direct X komutları ile ekran görüntüsü alınabileceği forumlarda tartışılıyor. Ancak ben denemedim. Snagit gibi programlar bu görüntüleri kaydedebiliyor.
destiny24
Üye
Mesajlar: 131
Kayıt: 22 Tem 2010 09:42

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen destiny24 »

Şimdi şöyle bir durum var,
Sonuç olarak kocaman oyun.Bundan önce DirectX yokmuydu da bir anda DirectX'e geçtiler ve ben ekran görüntüsü alamaz hale geldim.

Bunun içinde başka bir iş var bence.Programın en önemli özelliği çalışmıyor şuan ve proje elimde patlamış durumda.Başka neler deneyebilirim bu ekran görüntüsü ile.?

Teşekkürler,
İyi Çalışmalar.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen mkysoft »

Öncelikle program direct X kullanıyor mu kullanmıyor mu onu belirlemenizi öneririm. Oyun direct x yerine opengl 'de kullanıyor olabilir.
destiny24
Üye
Mesajlar: 131
Kayıt: 22 Tem 2010 09:42

Re: Ekran Görüntüsü - Farklı Sorun

Mesaj gönderen destiny24 »

peki bu tür sistemler kullanmadan oyun kocaman bir fps oyunu yazmak mümkün müdür.? Çünkü eğer mümkün değilse sorun da bu değildir.Dediğim gibi daha önce screen Shot alabiliyor iken şimdi alamıyorum.

Ayrıca SDK Ları indirip yükleyemedin XE2 için nasıl anlayabilirim Direct X veya OpenGL Kullanıp kullanılmadığını.

Teşekkürler,
İyi Çalışmalar.
Cevapla