كيف يمكنني جعل systray (منطقة الإعلام) رمز تتلقى WM_MOUSEWHEEL الرسائل ؟

StackOverflow https://stackoverflow.com/questions/90411

  •  01-07-2019
  •  | 
  •  

سؤال

أريد أن أعرب عن تطبيق موجود أنا على تقديم مجموعة خلاط الصوت عن طريق عجلة التمرير على انها منطقة الإعلام الرمز.

بقدر ما أعرف, منطقة الإعلام لا تتلقى أي WM_MOUSEWHEEL الرسائل ولكن لا يزال يمكنني العثور على التطبيق الذي يفعل بالضبط ما أريد تحقيقه (http://www.actualsolution.com/power_mixer).باستخدام WinspectorSpy لقد لاحظت بعض الرسائل الغريبة تطبيق نموذج يتلقى:0x000003d0 و 0x000003d1, ولكن لم أجد أي إشارات حول لهم.

لا أحد لديه أي فكرة عن كيف يمكن تحقيق المطلوب وظيفة ؟

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في التقاط الماوس/لوحة المفاتيح الأحداث خارج التطبيق الخاص بك سوف تحتاج مستوى منخفض السنانير.

لطيفة للمبتدئين المادة حول تثبيت ربط ماوس في دلفي كيفية ربط الماوس للقبض على الأحداث خارج التطبيق الخاص بك على About.com كتبه Zarko Gajic.

المستخدم الذي يبدأ التطبيق الخاص بك سوف تحتاج إلى تثبيت الخطاف.

بعد التقاط الرسالة يجب عليك تحديد إذا كان فوق الرمز في شريط الإعلام (التي يمكن أن تكون صعبة لأنه لا يوجد الدقيق api للحصول على الموقف الخاص بك على شريط) من عملية التمرير الحدث.

نصائح أخرى

شرحت عن الماوس تركيب و ذكر أنه يمكن أن يكون من الصعب تحديد بالضبط رمز.لم وجدت المقالة التالية حول كيفية تحديد موقع رمز علبة.

CTrayIconPosition - حيث هو بلدي علبة رمز ؟ قبل Irek زيلينسكي.أعتقد إذا كنت في محاولة لفهم كيف يعمل يمكنك تشغيل حولها و استخدامه للتحقق ما إذا كان الماوس الخاص بك حاليا وضعه فوق الرمز الخاص بك.

ولكن يجب عليك أولا التحقق ما إذا كان الماوس حتى في منطقة الدرج.لقد وجدت بعض القانون القديم من الألغام (2005) الذي يقع على الصحيح المنطقة.

var
 hwndTaskBar, hwndTrayWnd, hwndTrayToolBar : HWND;
 rTrayToolBar : tRect;
begin
 hwndTaskBar  := FindWindowEx (0, 0, 'Shell_TrayWnd', nil);
 hwndTrayWnd  := FindWindowEx (hwndTaskBar , 0, 'TrayNotifyWnd',nil);
 hwndTrayToolBar := FindWindowEx(hwndTrayWnd, 0, 'ToolbarWindow32',nil);

 Windows.GetClientRect(hwndTrayToolBar, rTrayToolBar);
end

باستخدام قطعة من التعليمات البرمجية والمعرفة من المادة المذكورة أعتقد أنك يمكن أن تنفذ الوظائف التي تريد.

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

معرف لا أعرف إذا كان هذا سوف تساعدك ، ولكن في دلفي القياسية رسالة المكتبة الدول:

WM_MOUSEWHEEL = $020A;

وسيكون من المفيد أيضا إذا كنت اسمحوا كما تعرف اللغة التي كنت تستخدم.

فكرت فقط أن نشير إلى أن السلطة خلاط هو الاستيلاء على عجلة التمرير الأحداث على العموم المهام ، في حين الماوس الأوسط انقر تعمل فقط على sys أيقونة صينية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top