Delphi Can
Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Access violation (https://www.delphican.com/forumdisplay.php?fid=136)
+--- Konu Başlığı: Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) (/showthread.php?tid=1309)

Sayfalar: 1 2 3


Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - ismailkocacan - 07-09-2017

Hocam siz sorana kadar ben de callback fonksiyon ile çözülebileceğini bilmiyordum. :ss


Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - Tuğrul HELVACI - 07-09-2017

Maksat, farklı bakış açıları kazandırabilmek ve araştırmaya teşvik etmek. Herşeyi bilemeyiz elbette, ama araştırınca bir çok şey öğrenilebiliyor. Smile


Cvp: Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - savasabd - 07-09-2017

İstenen api SendMessageTimeout olmasa da bu api SMTO_NORMAL parametresiyle çağrıldığında sizin istediğiniz  işi yapacağını düşünüyorum hocam haksız mıyım?


Cvp: Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - Tuğrul HELVACI - 07-09-2017

(07-09-2017, Saat: 18:16)savasabd Adlı Kullanıcıdan Alıntı: İstenen api SendMessageTimeout olmasa da bu api SMTO_NORMAL parametresiyle çağrıldığında sizin istediğiniz  işi yapacağını düşünüyorum hocam haksız mıyım?

Hedef pencerenin ilgili thread'inin ne kadar zaman mesaj işleyemeyeceğini bilemeyeceğimiz için, SendMessageTimeOut API'si olmaz demiştim. Eğer MSDN açıklamasını yanlış anlamadı isem bu API yine Timeout süresi kadar bekliyor ama çağıran thread'in bloklanmasını engelliyor. Elbette denemek gerek.


Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - ismailkocacan - 07-09-2017

Soruda pencerenin handle elde edilip, handle üzerinden mesaj gönderilmesi istenmişti.
Pencere handle'ı üzerinden değilde, threadid üzerinden gidip bir çözüm üretmek istersek o zaman burada bahsedildiği gibi PostThreadMessage fonksiyonu ile threadin kuyruğuna bir mesaj ekleyip işlenmesini beklemeden dönebiliriz.

Denemedim fakat bu yöntemin de 2. uygulamada ki (mesajı gönderen uygulama) kilitlenme problemini çözeceğini düşünüyorum.
2. Process'in bir şekilde, 1. Process'in main threadid'sini elde etmesi lazım elbette...


Cvp: Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - savasabd - 07-09-2017

Yanlış anlamadıysam SendMessageCallback apisiyle çağıran thread  uyuyan thread'in  uyanmasını süre sınırı olmaksızın bekliyor ve bloke olmuyor.SendMessageTimeout  apisi ise bunu belirli bir süreye göre yapıyor.Burada süre parametresini INFINITE olarak verirsek 49.7 günlük bir bekleyiş sağlayarak yakın bir çözümü sağlayabilir.


Cvp: Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - Tuğrul HELVACI - 08-09-2017

(07-09-2017, Saat: 21:18)savasabd Adlı Kullanıcıdan Alıntı: Yanlış anlamadıysam SendMessageCallback apisiyle çağıran thread  uyuyan thread'in  uyanmasını süre sınırı olmaksızın bekliyor ve bloke olmuyor.SendMessageTimeout  apisi ise bunu belirli bir süreye göre yapıyor.Burada süre parametresini INFINITE olarak verirsek 49.7 günlük bir bekleyiş sağlayarak yakın bir çözümü sağlayabilir.

Yanlış anlamışsınız. Lütfen ilgili API'nin yardım dökümanını bir kere daha dikkatle inceleyin. İmkan bulabiliyorsanız da bir deneme yapın.


Cvp: Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - savasabd - 08-09-2017

Dısardayım,dönünce ilk işim denemek olacak ama ilgili api dökümanında
 SMTO_NORMAL
0x0000
"The calling thread is not prevented from processing other requests while waiting for the function to return" yazıyor.Burada çagiran threadin fonksiyon dönünceye kadar bloke olmayacagi yaziyor.Deneyince sonuçları da yazacagim.


Cvp: Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - Tuğrul HELVACI - 08-09-2017

(08-09-2017, Saat: 11:17)savasabd Adlı Kullanıcıdan Alıntı: Dısardayım,dönünce ilk işim denemek olacak ama ilgili api dökümanında
 SMTO_NORMAL
0x0000
"The calling thread is not prevented from processing other requests while waiting for the function to return" yazıyor.Burada çagiran threadin fonksiyon dönünceye kadar bloke olmayacagi yaziyor.Deneyince sonuçları da yazacagim.

SendMessageCallback API'sinden bahsediyorum Wink


Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) - ismailkocacan - 08-09-2017

Yukarıda bahsettiğim PostThreadMessage ile sunduğum çözüm hakkında kimse bir şey demedi.