Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 18171|Svar: 0

[Kommunikation] Ren C# hook-implementering

[Kopier link]
Opslået på 07/02/2019 21.10.23 | | |
Ren C# Hook-implementering

For at implementere systemhooks er det faktisk meget simpelt, bare kald de tre Win32 API'er.
SetWindowsHookEx bruges til at sætte hooks op. (Opret et kort for at tjekke de oplysninger, du har brug for)

CallNextHookEx bruges til at sende hooks (beskeder er vigtige, så hvor de kommer fra, bør de gå tilbage til det sted, du vil blokere dem)




UnhookWindowsHookEx Afinstaller hooks (afinstallation er meget vigtigt, for mange fastlåste indstillinger vil forårsage overbelastning)


Artiklen "HOW TO: Setting Window Hooks in Visual C# .NET" beskriver det således:
Globale hooks understøttes ikke i .NET-frameworket
Du kan ikke implementere globale hooks i Microsoft .NET-frameworket. For at installere en global hook skal hooken have en native dynamic link library (DLL) eksport, så den kan indsættes i en anden proces, der skal kaldes i en gyldig og konsistent funktion. Dette kræver en DLL-eksport, som ikke understøttes af .NET-frameworket. Den administrerede kode har ikke konceptet med en uniform værdi for funktionspointere, fordi disse funktioner er dynamisk konstruerede proxyer.
Jeg fandt en masse kode på internettet, og de fleste indeholder en C++ DLL, der identificerer DLL'en med den subrutine, som lpfn henviser til, hvilket ser ud til at bekræfte denne påstand.

Men i virkeligheden er dette ikke tilfældet, og den globale hook kan implementeres ved hjælp af følgende kode:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule);
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 );
Bemærk: ManifestModule-egenskaben er en ny tilføjelse i .Net Framework 2.0, så når du stadig bruger . I Net Framework 1.x kan du bruge GetModules-metoden til at hente alle modulerne i den aktuelle assembly og derefter bruge en af dem som parameter til GetHINSTAN-metoden for at få den relevante håndtagspointer.





Tidligere:Delegerer i C#
Næste:Brug af hook-funktioner i C#-programmeringsfærdigheder - SetWindowsHookEx
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com