Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 18171|Odpoveď: 0

[Komunikácia] Čistá implementácia C# hooku

[Kopírovať odkaz]
Zverejnené 7. 2. 2019 21:10:23 | | |
Čistá implementácia C# Hook

Na implementáciu systémových hákov je to vlastne veľmi jednoduché, stačí zavolať tri Win32 API.
SetWindowsHookEx sa používa na nastavenie hookov. (Nastavte si kartu na kontrolu potrebných informácií)

CallNextHookEx sa používa na odovzdávanie háčikov (správy sú dôležité, takže odkiaľ pochádzajú, mali by sa vrátiť tam, kde ich chcete zablokovať)




Odpojte WindowsHookEx Odinštalujte háky (odinštalovanie je veľmi dôležité, príliš veľa zaseknutých nastavení spôsobí zahltenie)


Článok "AKO TO: Setting Window Hooks vo Visual C# .NET" to opisuje nasledovne:
Globálne háky nie sú podporované v .NET frameworku
V Microsoft .NET frameworku nemôžete implementovať globálne hooky. Na inštaláciu globálneho hooku musí mať hook natívny export z dynamickej knižnice odkazov (DLL), aby mohol byť vložený do iného procesu, ktorý je potrebné volať do platnej a konzistentnej funkcie. To vyžaduje export DLL, ktorý .NET framework nepodporuje. Spravovaný kód nemá koncept jednotnej hodnoty pre ukazovatele funkcií, pretože tieto funkcie sú dynamicky konštruované proxy.
Našiel som veľa kódu na internete a väčšina z nich obsahuje C++ DLL na identifikáciu DLL obsahujúcej podprogram spomínaný lpfn, čo sa zdá byť potvrdené týmto tvrdením.

V skutočnosti to však tak nie je a globálny hák možno implementovať pomocou nasledujúceho kódu:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule );
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 );
Poznámka: Vlastnosť ManifestModule je novinkou v .Net Framework 2.0, takže ak stále používate . V Net Framework 1.x môžete použiť metódu GetModules na získanie všetkých modulov aktuálnej zostavy a potom použiť jeden z nich ako parameter pre metódu GetHINSTAN na získanie príslušného ukazovateľa rukoväte.





Predchádzajúci:Delegát v C#
Budúci:Použitie hook funkcií v programovacích zručnostiach v C# - SetWindowsHookEx
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com