Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 18171|Svare: 0

[Kommunikasjon] Ren C#-krokimplementering

[Kopier lenke]
Publisert på 07.02.2019 21:10:23 | | |
Ren C# Hook-implementering

For å implementere systemkroker er det faktisk veldig enkelt, bare kall de tre Win32-API-ene.
SetWindowsHookEx brukes til å sette opp hooks. (Sett opp et kort for å sjekke informasjonen du trenger)

CallNextHookEx brukes til å sende hooks (meldinger er viktige, så der de kommer fra, bør de gå tilbake dit du vil blokkere dem)




UnhookWindowsHookEx Avinstaller-kroker (avinstallasjon er veldig viktig, for mange fastlåste innstillinger vil føre til overbelastning)


Artikkelen "HOW TO: Setting Window Hooks in Visual C# .NET" beskriver det slik:
Globale kroker støttes ikke i .NET-rammeverket
Du kan ikke implementere globale kroker i Microsoft .NET-rammeverket. For å installere en global hook må hooken ha en native dynamic link library (DLL)-eksport slik at den kan settes inn i en annen prosess som må kalles inn i en gyldig og konsistent funksjon. Dette krever en DLL-eksport, som ikke støttes av .NET-rammeverket. Den administrerte koden har ikke konseptet med en uniform verdi for funksjonspekere, fordi disse funksjonene er dynamisk konstruerte proxyer.
Jeg fant mye kode på Internett, og de fleste inneholder en C++ DLL for å identifisere DLL-en som inneholder subrutinen lpfn refererer til, noe som ser ut til å bekrefte denne påstanden.

Men i realiteten er dette ikke tilfelle, og den globale kroken kan implementeres ved hjelp av følgende kode:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule);
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 );
Merk: ManifestModule-egenskapen er et nytt tillegg i .Net Framework 2.0, så når du fortsatt bruker . I Net Framework 1.x kan du bruke GetModules-metoden for å hente alle modulene til den nåværende assemblyen, og deretter bruke en av dem som parameter til GetHINSTAN-metoden for å hente riktig håndtakpeker.





Foregående:Delegat i C#
Neste:Bruk av hook-funksjoner i C#-programmeringsferdigheter - SetWindowsHookEx
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com