Eski bir uygulamaya işlevsellik eklemek isteyen bir müşteri ile çalışıyorum. Satıcısı işe yaramaz olan uygulamanın bir Windows Forms UI'si var. Müşterimin istediği şey, kullanıcı uygulamadaki bir bilgi parçasını tıkladığında bu uygulamanın dışındaki belirli işlevler için tetiklenir.Tuş vuruşlarını ve fare tıklamalarını diğer uygulamalara kesip geçiren bir Windows uygulamasını nasıl oluşturabilirim?
Bunun başka bir müşteri için yapılan basit bir sürümünü gördüm. Bu durumda, SetWindowPos
kullanarak en üstteki pencereye ayarlanmış bir formdan oluşan bir uygulama var. Kullanıcı bu formdaki bir düğmeyi tıkladığında, uygulama eski uygulama penceresini bulur ve pencerenin altyazısından bilgi alır. Bu hiç de belirsiz - eski uygulama açık olmasa bile asla geçmeyen bu yüzen düğme var - ama çalışıyor.
Topmost
özellik kümesinde kenarlıksız şeffaf bir WPF penceresi kullanarak buna benzer bir şey yapmanın mümkün olup olmayacağını merak ediyordum. Düşünüyorum uygulama eski uygulama penceresindeki içeriği analiz eder ve sıcak noktalar listesi tanımlar. Bir hotspotta herhangi bir fare tıklığını tutacak ve tutacak ve kalan tüm fare tıklamalarını eski uygulamaya geçirecek.
Windows API ile deneyimlemedim, bu yüzden bu tür bir yeteneğin uygulanmasının (hatta) mümkün olup olmadığını bilmiyorum. Ve anti-malware araçları yazıyor olsaydım, akılda tuttuğum uygulama tam olarak sakatlanmaya çalışacağım türden bir şeydi.
Bu aslında uygulanabilir bir proje ise, bunu yapmanın en iyi yolu nedir? Hangi beklenmedik problemlere bakmalıyım?
Uygulamadaki tüm pencereleri zahmetli olan alt sınıflara ayırmanız gerekir. –
@david: Sadece yüksek seviyeli pencereleri alt sınıflara ayırmanız yeterlidir, bu da op'un sorusunu nasıl okuduğumla ilgili olarak, sadece alt pencerelere ihtiyaç duyan 1 – Necrolis
alt sınıfına gereksinim vardır. –