Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 18171|Jawab: 0

[Komunikasi] Implementasi hook C# murni

[Salin tautan]
Diposting pada 07/02/2019 21.10.23 | | |
Implementasi Hook C# murni

Untuk mengimplementasikan system hook, sebenarnya sangat sederhana, cukup sebut saja tiga API Win32.
SetWindowsHookEx digunakan untuk mengatur kait. (Siapkan kartu untuk memeriksa informasi yang Anda butuhkan)

CallNextHookEx digunakan untuk meneruskan kait (pesan itu penting, jadi dari mana asalnya, pesan tersebut harus kembali ke tempat Anda ingin memblokirnya)




Unhook WindowsHookEx Uninstall hooks (uninstall sangat penting, terlalu banyak pengaturan yang macet akan menyebabkan kemacetan)


Artikel "CARA: Mengatur Kait Jendela di Visual C# .NET" menjelaskannya sebagai berikut:
Hook global tidak didukung dalam kerangka kerja .NET
Anda tidak dapat mengimplementasikan kait global di kerangka kerja Microsoft .NET. Untuk menginstal kait global, kait harus memiliki ekspor pustaka tautan dinamis (DLL) asli sehingga dapat dimasukkan ke dalam proses lain yang perlu dipanggil ke dalam fungsi yang valid dan konsisten. Ini memerlukan ekspor DLL, yang tidak didukung oleh kerangka kerja .NET. Kode terkelola tidak memiliki konsep memiliki nilai seragam untuk penunjuk fungsi, karena fungsi ini adalah proxy yang dibangun secara dinamis.
Saya menemukan banyak kode di Internet, dan kebanyakan dari mereka berisi DLL C++ untuk mengidentifikasi DLL yang berisi subrutin yang dirujuk oleh lpfn, yang tampaknya memvalidasi klaim ini.

Namun pada kenyataannya, tidak demikian, dan kait global dapat diimplementasikan menggunakan kode berikut:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule );
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 );
Catatan: Properti ManifestModule adalah tambahan baru di .Net Framework 2.0, jadi ketika Anda masih menggunakan . Di Net Framework 1.x, Anda dapat menggunakan metode GetModules untuk mendapatkan semua modul rakitan saat ini, lalu menggunakan salah satunya sebagai parameter ke metode GetHINSTAN untuk mendapatkan penunjuk pegangan yang sesuai.





Mantan:Delegasi dalam C#
Depan:Penggunaan fungsi pengait dalam keterampilan pemrograman C# - SetWindowsHookEx
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com