Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 18171|Atbildi: 0

[Paziņojums] Tīra C# āķa ieviešana

[Kopēt saiti]
Publicēts 07.02.2019 21:10:23 | | |
Tīra C# āķa ieviešana

Lai ieviestu sistēmas āķus, tas patiesībā ir ļoti vienkārši, vienkārši izsauciet trīs Win32 API.
SetWindowsHookEx tiek izmantots, lai iestatītu āķus. (Iestatiet karti, lai pārbaudītu nepieciešamo informāciju)

CallNextHookEx tiek izmantots, lai nodotu āķus (ziņojumi ir svarīgi, tāpēc, no kurienes tie nāk, viņiem vajadzētu atgriezties tur, kur vēlaties tos bloķēt)




Atvienojiet WindowsHookEx Atinstalējiet āķus (atinstalēšana ir ļoti svarīga, pārāk daudz iestrēgušu iestatījumu radīs sastrēgumus)


Rakstā "HOW: Window Hooks iestatīšana Visual C# .NET" tas aprakstīts šādi:
Globālie āķi netiek atbalstīti .NET sistēmā
Microsoft .NET sistēmā nevar ieviest globālos āķus. Lai instalētu globālo āķi, āķim ir jābūt vietējai dinamisko saišu bibliotēkas (DLL) eksportēšanai, lai to varētu ievietot citā procesā, kas jāizsauc derīgā un konsekventā funkcijā. Tam ir nepieciešama DLL eksportēšana, ko neatbalsta .NET framework. Pārvaldītajam kodam nav jēdziena, ka funkciju rādītājiem ir vienota vērtība, jo šīs funkcijas ir dinamiski veidoti starpniekserveri.
Es atradu daudz koda internetā, un lielākā daļa no tiem satur C++ DLL, lai identificētu DLL, kas satur apakšprogrammu, uz kuru atsaucas lpfn, kas, šķiet, apstiprina šo apgalvojumu.

Bet patiesībā tas tā nav, un globālo āķi var īstenot, izmantojot šādu kodu:
IntPtr pInstance = Marshal.GetHINSTANCE( Assembly.GetExecutingAssembly(). ManifestModule );
Win32API.SetWindowsHookEx( WH_MOUSE_LL,m_MouseHookProcedure, pInstance, 0 );
Piezīme: Rekvizīts ManifestModule ir jauns papildinājums .Net Framework 2.0, tādēļ, ja jūs joprojām izmantojat . Programmā Net Framework 1.x varat izmantot GetModules metodi, lai iegūtu visus pašreizējās montāžas moduļus, un pēc tam izmantot vienu no tiem kā parametru GetHINSTAN metodei, lai iegūtu atbilstošo roktura rādītāju.





Iepriekšējo:Delegāts C#
Nākamo:Āķa funkciju izmantošana C# programmēšanas prasmēs - SetWindowsHookEx
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com