Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 18171|Vastaus: 0

[Viestintä] Puhdas C#-koukkutoteutus

[Kopioi linkki]
Julkaistu 7.2.2019 21.10.23 | | |
Puhdas C# Hook -toteutus

Järjestelmäkoukkujen toteuttaminen on itse asiassa hyvin yksinkertaista, kutsu vain kolmea Win32-rajapintaa.
SetWindowsHookEx toimii koukkujen asettamiseen. (Aseta kortti tarkistaaksesi tarvitsemasi tiedot)

CallNextHookExia käytetään hookien välittämiseen (viestit ovat tärkeitä, joten mistä ne tulevat, niiden pitäisi palata sinne, mistä haluat estää ne)




Irrota WindowsHookEx Poista koukut (poistaminen on todella tärkeää, liian monta jumittuneen asetusta aiheuttaa ruuhkaa)


Artikkeli "HOW TO: Setting Window Hooks in Visual C# .NET" kuvaa asiaa seuraavasti:
Globaaleja hookeja ei tueta .NET-kehyksessä
Et voi toteuttaa globaaleja hookeja Microsoft .NET -kehyksessä. Globaalin koukun asentamiseksi koukussa täytyy olla natiivi dynaaminen linkkikirjasto (DLL), jotta se voidaan lisätä toiseen prosessiin, joka täytyy kutsua kelvolliseksi ja johdonmukaiseksi funktioksi. Tämä vaatii DLL-viennin, jota .NET-kehys ei tue. Hallitulla koodilla ei ole käsitettä, että funktioosoittimilla olisi yhtenäistä arvoa, koska nämä funktiot ovat dynaamisesti rakennettuja välityspalvelijoita.
Löysin paljon koodia internetistä, ja useimmissa niistä on C++ DLL, jolla tunnistetaan DLL, joka sisältää lpfn:n viittaaman aliohjelman, mikä näyttää vahvistavan tämän väitteen.

Mutta todellisuudessa näin ei ole, ja globaali koukku voidaan toteuttaa seuraavalla koodilla:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule );
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0);
Huomautus: ManifestModule-ominaisuus on uusi lisäys .Net Framework 2.0:aan, joten kun käytät vielä . Net Framework 1.x:ssä voit käyttää GetModules-metodia saadaksesi kaikki nykyisen assemblyn moduulit, ja käyttää yhtä niistä parametrina GetHINSTAN-metodille saadaksesi sopivan kahvaosoittimen.





Edellinen:Edustaja C#:lla
Seuraava:Koukkufunktioiden käyttö C#-ohjelmointitaidoissa - SetWindowsHookEx
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com