Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 18171|Svar: 0

[Kommunikation] Ren C#-krokimplementering

[Kopiera länk]
Publicerad på 2019-02-07 21:10:23 | | |
Ren C# Hook-implementering

För att implementera systemkrokar är det faktiskt väldigt enkelt, bara kalla de tre Win32-API:erna.
SetWindowsHookEx används för att sätta upp hooks. (Skapa ett kort för att kontrollera den information du behöver)

CallNextHookEx används för att skicka hooks (meddelanden är viktiga, så där de kommer ifrån bör de gå tillbaka dit du vill blockera dem)




UnhookWindowsHookEx Avinstallationskrokar (avinstallation är mycket viktigt, för många fastkilade inställningar orsakar trängsel)


Artikeln "HOW TO: Setting Window Hooks in Visual C# .NET" beskriver det så här:
Globala hooks stöds inte i .NET-ramverket
Du kan inte implementera globala krokar i Microsoft .NET-ramverket. För att installera en global hook måste hooken ha en inbyggd dynamic link library (DLL)-export så att den kan infogas i en annan process som behöver anropas i en giltig och konsekvent funktion. Detta kräver en DLL-export, vilket inte stöds av .NET-ramverket. Den hanterade koden har inte konceptet att ha ett enhetligt värde för funktionspekare, eftersom dessa funktioner är dynamiskt konstruerade proxyer.
Jag hittade mycket kod på internet, och de flesta innehåller en C++ DLL för att identifiera DLL:n som innehåller subrutinen som lpfn syftar på, vilket verkar bekräfta detta påstående.

Men i verkligheten är detta inte fallet, och den globala kroken kan implementeras med följande kod:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule);
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 );
Observera: ManifestModule-egenskapen är ett nytt tillägg i .Net Framework 2.0, så när du fortfarande använder . I Net Framework 1.x kan du använda GetModules-metoden för att hämta alla moduler i den aktuella assemblyn, och sedan använda en av dem som parameter till GetHINSTAN-metoden för att få rätt handle-pekare.





Föregående:Delegera i C#
Nästa:Användning av hook-funktioner i C#-programmeringsfärdigheter - SetWindowsHookEx
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com