معلومات

ألقى دلفي الدرجة مع شفرة المصدر

ألقى دلفي الدرجة مع شفرة المصدر

رمز مقدم من ينس بوريشولت. النص من قبل زاركو جاجيتش.

بواسطة ينس: الخطافات ، رأيت الكثير من الأشخاص يحاولون إيجاد حل نظيف لتثبيت الرسائل في أحد التطبيقات. لذلك قررت منذ بعض الوقت لتنفيذ السنانير كصف ، مع أحداث لطيفة والاشياء :)

Hook.pas يجعل من الممكن تعيين مؤشر أسلوب إلى مؤشر إجراء (مع بعض المساعدة من المجمّع).

على سبيل المثال: إذا كنت تريد تعويض جميع ضغطات المفاتيح في التطبيق الخاص بك - قم ببساطة بإعلان مثيل TKeyboardHook ، قم بتعيين معالج أحداث لـ OnPreExecute أو OnPostExecute ، أو كليهما. عيّن KeyboadHook نشطًا (KeyboardHook.Active: = True) وأنت قيد التشغيل ...

على ويندوز هوكس

الخطاف هو نقطة في آلية معالجة رسائل النظام حيث يمكن للتطبيق تثبيت روتين فرعي لمراقبة حركة الرسائل في النظام ومعالجة أنواع معينة من الرسائل قبل أن تصل إلى إجراء النافذة المستهدفة.

بعد فترة وجيزة ، فإن الخطاف هو وظيفة يمكنك إنشاؤها كجزء من ملف dll أو تطبيقك لمراقبة "الأحداث" داخل نظام التشغيل Windows.

تتمثل الفكرة في كتابة وظيفة تسمى في كل مرة يحدث فيها حدث معين في الإطارات - على سبيل المثال عندما يقوم المستخدم بالضغط على مفتاح على لوحة المفاتيح أو تحريك الماوس.

للحصول على مقدمة أكثر تعمقًا عن الخطافات ، ألق نظرة على ما هو خطاف Windows وكيفية استخدامها داخل تطبيق Delphi.

ربط آلية تعتمد على رسائل ويندوز وظائف رد الاتصال.

أنواع السنانير

فمثلا:
يمكنك استخدام الخطاف WH_KEYBOARD لمراقبة إدخال لوحة المفاتيح المنشورة في قائمة انتظار الرسائل ؛
يمكنك استخدام ربط WH_MOUSE لمراقبة إدخال الماوس الذي تم نشره في قائمة انتظار الرسائل ؛
يمكنك إجراء إجراء ربط WH_SHELL عندما يكون تطبيق shell على وشك التنشيط وعندما يتم إنشاء أو إتلاف نافذة المستوى الأعلى.

Hooks.pas

  • TCBTHook - يسمى قبل تفعيل أو إنشاء أو إتلاف أو تصغير أو تكبير أو نقل أو تغيير حجم نافذة ؛ قبل إكمال أمر النظام ؛ قبل إزالة حدث الماوس أو لوحة المفاتيح من قائمة انتظار رسائل النظام ؛ قبل تحديد التركيز المدخلات. أو قبل المزامنة مع قائمة انتظار رسائل النظام.
  • TDebugHook - يسمى قبل استدعاء إجراءات ربط المرتبطة بأي ربط أخرى في النظام
  • TGetMessageHook - يمكّن تطبيق لمراقبة الرسائل على وشك أن يتم إرجاعها بواسطة الدالة GetMessage أو PeekMessage
  • TJournalPlaybackHook - يمكّن التطبيق من إدراج رسائل في قائمة انتظار رسائل النظام.
  • يتيح لك TJournalRecordHook - مراقبة وتسجيل أحداث الإدخال (لتسجيل سلسلة من أحداث الماوس ولوحة المفاتيح لتشغيلها لاحقًا باستخدام ربط WH_JOURNALPLAYBACK).
  • TKeyboardHook - يمكّن تطبيق لمراقبة حركة مرور الرسائل لرسائل WM_KEYDOWN و WM_KEYUP.
  • يمكّنك TMouseHook - من مراقبة رسائل الماوس على وشك أن يتم إرجاعها بواسطة وظيفة GetMessage أو PeekMessage.
  • يتيح لك TLowLevelKeyboardHook - مراقبة أحداث إدخال لوحة المفاتيح على وشك أن يتم نشرها في قائمة انتظار إدخال سلسلة الرسائل.
  • يتيح لك TLowLevelMouseHook - مراقبة أحداث إدخال الماوس على وشك أن يتم نشرها في قائمة انتظار إدخال مؤشر ترابط.

مثال TKeyboardHook

تنزيل التطبيق hooks.pas + demo

الاستخدامات السنانير، ... فار KeyboardHook: TKeyboardHook ؛ ... // معالج الحدث OnCreate في MainForm إجراء TMainForm.FormCreate (المرسل: TObject) ؛ ابدأ KeyboardHook: = TKeyboardHook.Create؛ KeyboardHook.OnPreExecute: = KeyboardHookPREExecute؛ KeyboardHook.Active: = True؛ النهاية; // يعالج OnPREExecute KeyboardHook إجراء TMainForm.KeyboardHookPREExecute (Hook: THook؛ var Hookmsg: THookMsg)؛ فار مفتاح: كلمة؛ ابدأ   / / هنا يمكنك اختيار ما إذا كنت تريد إرجاع // ضربة المفتاح إلى التطبيق أم لا Hookmsg.Result: = IfThen (cbEatKeyStrokes.Checked، 1، 0)؛ مفتاح: = Hookmsg.WPARAM؛ التسمية التوضيحية: = Char (مفتاح) ؛ النهاية;

جاهز ، مجموعة ، هوك :)


شاهد الفيديو: تجربتي مع علاج تقشير البشره مع الدكتور عيسى بشور . . الشهر الاول . (يونيو 2021).