Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 18171|Yanıt: 0

[İletişim] Saf C# hook uygulaması

[Bağlantıyı kopyala]
Yayınlandı 7.02.2019 21:10:23 | | |
Saf C# Hook uygulaması

Sistem hooklarını uygulamak için aslında çok basit, sadece üç Win32 API'sini çağırmak yeterlidir.
SetWindowsHookEx kancaları kurmak için kullanılır. (İhtiyacınız olan bilgileri kontrol etmek için bir kart kurun)

CallNextHookEx hook aktarmak için kullanılır (mesajlar önemlidir, bu yüzden nereden geldikleri yerden engellemek istediğiniz yere geri dönmelidir)




HookWindowsHookEx Bağlantıları kaldır (kaldırmak çok önemli, çok fazla ayar tıkanıklığa yol açar)


"HOW TO: Setting Window Hooks in Visual C# .NET" makalesi bunu şu şekilde tanımlıyor:
.NET çerçevesinde küresel hooklar desteklenmez
Microsoft .NET framework'te global hook'ları uygulayamazsınız. Küresel bir kanca kurmak için, hook'un geçerli ve tutarlı bir fonksiyona çağrılması gereken başka bir sürece eklenebilir bir yerel dinamik bağlantı kütüphanesi (DLL) dışına aktarılması gerekir. Bu, .NET çerçevesi tarafından desteklenmeyen bir DLL dışa aktarımı gerektirir. Yönetilen kod, fonksiyon işaretçileri için tekdüze bir değere sahip olma kavramına sahip değildir, çünkü bu fonksiyonlar dinamik olarak oluşturulmuş proxy'lerdir.
İnternette çok sayıda kod buldum ve çoğu, lpfn tarafından atıfta bulunulan alt programı içeren DLL'yi tanımlamak için C++ DLL içeriyor, bu da bu iddiayı doğruluyor gibi görünüyor.

Ancak gerçekte durum böyle değildir ve küresel hook aşağıdaki kod kullanılarak uygulanabilir:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule );
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0);
Not: ManifestModule özelliği .Net Framework 2.0'da yeni bir eklemedir, yani hâlâ kullandığınızda . Net Framework 1.x'te, mevcut montajın tüm modüllerini almak için GetModules metodunu kullanabilir ve ardından bunlardan birini GetHINSTAN metoduna parametre olarak kullanarak uygun tutucu işaretçisini elde edebilirsiniz.





Önceki:C# Delegesi
Önümüzdeki:C# programlama becerilerinde kanca fonksiyonlarının kullanımı - SetWindowsHookEx
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com