Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
çözüldü-screenshot yapmak hk.
#11
(09-06-2024, Saat: 15:49)bydelphi Adlı Kullanıcıdan Alıntı: Merhabalar,

Windows hizmetlerin içinde desktop screenshot alıyorum hatta sıkıştırıp jpg de yapıyorum, image obje oluşuyor erişiliyor  , hizmet çalışıyor ancak her seferinde beyaz bir bitmap geçiyor elime.
acaba hizmetlerden bu mümkün değilmi yada dikkat etmek gereken bir şey mi var. tabi şunuda söylemeliyim, aynı kod  vcl exe uygulamamda sorunsuz işliyor .
jpg'e dönüştürmeden de aldığımda da yine beyaz. Yardımcı olabilirmisiniz.

    DSK := GetDC(GetDesktopWindow);
   BMP := TBitmap.Create;
   BMP.Width := Screen.Width;
   BMP.Height := Screen.Height;
   BitBlt(BMP.Canvas.Handle, 0, 0, BMP.Width, BMP.Height,DSK, 0, 0,SrcCopy);
   JPG := TJPEGImage.Create;
   JPG.Assign(BMP);
   JPG.CompressionQuality := 70;
   JPG.Compress;

Merhaba,

Servisler kullanıcı arayüzü ile etkileşime giremezler.
Bu nedenle servisi > kullanıcı yetkisi ile açmayı denermisiniz lütfen.

https://stackoverflow.com/questions/7088...mmand-line

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#12
(10-06-2024, Saat: 09:17)hi_selamlar Adlı Kullanıcıdan Alıntı:
(09-06-2024, Saat: 15:49)bydelphi Adlı Kullanıcıdan Alıntı: Merhabalar,

Windows hizmetlerin içinde desktop screenshot alıyorum hatta sıkıştırıp jpg de yapıyorum, image obje oluşuyor erişiliyor  , hizmet çalışıyor ancak her seferinde beyaz bir bitmap geçiyor elime.
acaba hizmetlerden bu mümkün değilmi yada dikkat etmek gereken bir şey mi var. tabi şunuda söylemeliyim, aynı kod  vcl exe uygulamamda sorunsuz işliyor .
jpg'e dönüştürmeden de aldığımda da yine beyaz. Yardımcı olabilirmisiniz.

    DSK := GetDC(GetDesktopWindow);
   BMP := TBitmap.Create;
   BMP.Width := Screen.Width;
   BMP.Height := Screen.Height;
   BitBlt(BMP.Canvas.Handle, 0, 0, BMP.Width, BMP.Height,DSK, 0, 0,SrcCopy);
   JPG := TJPEGImage.Create;
   JPG.Assign(BMP);
   JPG.CompressionQuality := 70;
   JPG.Compress;

Merhaba,

Servisler kullanıcı arayüzü ile etkileşime giremezler.
Bu nedenle servisi > kullanıcı yetkisi ile açmayı denermisiniz lütfen.

https://stackoverflow.com/questions/7088...mmand-line

Kolay gelsin.



Teşekkür ederim @hi_selamlar kardeşim aradığım cevap buydu 
ancak denemelerimde sonuç elde edemedim Sad  

zaten sayfanın altında aynen şu ifade geçiyor Türkçe meali : 
"Bu özelliğin Windows'un daha yeni sürümlerinde büyük ölçüde ortadan kalktığını unutmayın; örneğin Vista'da bu göz ardı edilir; güvenlik nedeniyle hizmetlerin artık masaüstüyle etkileşime girmesine izin verilmez."

Çözüm olarak 
servis ile ufak bir exe execute edip ilgili işlemleri yapacağım.
şeklinde değerlendiriyorum şu an.
Kalan ömrünün en genç build’indesin.
Counter artar, deadline sabit.
Age++ çalışıyor, rollback yok.
Her yer exception
Cevapla
#13
Servis DLL çalıştırdığında nasıl bir sonuç çıkıyor?
Cevapla
#14
(10-06-2024, Saat: 15:29)engerex Adlı Kullanıcıdan Alıntı: Servis DLL çalıştırdığında nasıl bir sonuç çıkıyor?


hocam Servisi DLL olarak export etmeyimi kastediyorsun, şu an servisi, exe  export ediyorum. dll export ediliyor mu bilmiyorum.
yada screenshot alan fonksiyonu ayrı bir dll oluşturup dene mi diyorsun. bu da çok mantıklı belkide yapar deneyeceğim.
Kalan ömrünün en genç build’indesin.
Counter artar, deadline sabit.
Age++ çalışıyor, rollback yok.
Her yer exception
Cevapla
#15
(10-06-2024, Saat: 15:57)bydelphi Adlı Kullanıcıdan Alıntı:
(10-06-2024, Saat: 15:29)engerex Adlı Kullanıcıdan Alıntı: Servis DLL çalıştırdığında nasıl bir sonuç çıkıyor?
...
yada screenshot alan fonksiyonu ayrı bir dll oluşturup dene mi diyorsun.
...

EXE servis ile ayrı DLL deneyebilirsin. Bence olmayacak, sonuçta o da servis altında çalışıyor. Denemekte fayda var.
Cevapla
#16
Dll oluşturup başka bir exe içerisinden çağırdım ve istediğim sonucu rahatlıkla aldım,
ancak dll i servis içerisinden çağırdığımda beklediğim sonucu alamadım.
servis içinden yakalarken bembeyaz sayfa alırken, dll içerisinden capture yaparken simsiyah sayfa aldım aynı kodla ilginç.
sonuç olarak servisin kontrol ettiği exe ile yola devam Smile
Kalan ömrünün en genç build’indesin.
Counter artar, deadline sabit.
Age++ çalışıyor, rollback yok.
Her yer exception
Cevapla
#17
Merhabalar, 

Konunun devamı olarak şu konuda da sizden  destek rica ediyorum.

aldığım capture bitmapı bir önceki ile karşılaştırıp bu iki bitmap image bire bir aynı ise ,   bunu kontrol etmek istiyorum,
Çok kaynak tüketmeden pixel pixel kontrol etmeye gerek kalmadan nasıl yapabiliriz .
iki bitmapin boyutunu byte cinsinden cardinal olarak karşılaştırdığımda  bu isteğime cevap verir mi sizce,
yada daha sağlıklı bir yolu varmıdır.

         DSK := GetDC(GetDesktopWindow);
        BMP := TBitmap.Create;
        BMP.Width := Screen.Width;
        BMP.Height := Screen.Height;
        BitBlt(BMP.Canvas.Handle, 0, 0, BMP.Width, BMP.Height,DSK, 0, 0,SrcCopy);

Teşekkürler.
Kalan ömrünün en genç build’indesin.
Counter artar, deadline sabit.
Age++ çalışıyor, rollback yok.
Her yer exception
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  SQL Table Type parametre gecisi hakkında (Çözüldü) adelphiforumz 1 218 09-04-2026, Saat: 15:53
Son Yorum: adelphiforumz
  FastReport Dinamik Sayıya Göre Etiket Bastırma [ÇÖZÜLDÜ] bünyamin68 2 769 09-01-2025, Saat: 13:47
Son Yorum: bünyamin68
  7d sinema icin video oynatici yapmak hk. sadikacar60 3 811 19-11-2024, Saat: 21:38
Son Yorum: sadikacar60
  paslibvlcplayerin gec acilmasi sorunu-COZULDU sadikacar60 7 1.165 08-10-2024, Saat: 09:25
Son Yorum: mrmarman
  [Çözüldü] HTTP üzerinden RTSP ile IP kamera stream işlemek Abdullah ILGAZ 4 6.897 08-10-2024, Saat: 09:20
Son Yorum: sadikacar60



Konuyu Okuyanlar: 1 Ziyaretçi