Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 18171|Odpověď: 0

[Komunikace] Čistá implementace hooku v C#

[Kopírovat odkaz]
Zveřejněno 07.02.2019 21:10:23 | | |
Čistá implementace hooku v C#

Pro implementaci systémových hooků je to vlastně velmi jednoduché, stačí zavolat tři Win32 API.
SetWindowsHookEx se používá k nastavení háků. (Nastavte si kartu, abyste si ověřili potřebné informace)

CallNextHookEx se používá k předávání háčků (zprávy jsou důležité, takže odkud přicházejí, měly by se vrátit tam, kde je chcete zablokovat)




Odhákejte WindowsHookEx Odinstalujte háky (odinstalace je velmi důležitá, příliš mnoho zaseknutých nastavení způsobí zahlcení)


Článek "JAK TO: Setting Window Hooks ve Visual C# .NET" jej popisuje následovně:
Globální háky nejsou v .NET frameworku podporovány
V Microsoft .NET frameworku nelze implementovat globální hooky. Pro instalaci globálního háku musí hák mít nativní exportovanou knihovnu dynamických linků (DLL), aby jej bylo možné vložit do jiného procesu, který je třeba volat do platné a konzistentní funkce. To vyžaduje export DLL, který .NET framework nepodporuje. Spravovaný kód nemá koncept jednotné hodnoty pro ukazatele funkcí, protože tyto funkce jsou dynamicky konstruované proxy.
Našel jsem na internetu spoustu kódu a většina z nich obsahuje C++ DLL pro identifikaci DLL obsahující podprogram odkazovaný lpfn, což se zdá potvrzovat toto tvrzení.

Ve skutečnosti tomu tak však není a globální hook lze implementovat pomocí následujícího kódu:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule );
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 );
Poznámka: Vlastnost ManifestModule je novinkou v .Net Framework 2.0, takže pokud stále používáte . V Net Framework 1.x můžete použít metodu GetModules k získání všech modulů aktuálního assembleru a pak použít jeden z nich jako parametr pro metodu GetHINSTAN pro získání příslušného ukazatele rukojeti.





Předchozí:Delegát v C#
Další:Použití hookových funkcí v programovacích dovednostech v C# - SetWindowsHookEx
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com