سؤال

أحتاج إلى اكتشاف المستخدم الخامل في تطبيقي فقط (لكل "مثيل التطبيق الخاص بي").
لا أستطيع استخدام GetLastInputInfo والسبب هو مدخلات المستخدم الخاصة بالجلسة:

GetLastInputInfo لا توفير معلومات إدخال المستخدم على مستوى النظام عبر جميع الجلسات الجارية.بدلا من ذلك، يوفر GetLastInputInfo مدخلات المستخدم الخاصة بالجلسة المعلومات الخاصة بالجلسة التي استدعت الوظيفة فقط.

أي اقتراحات ؟

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

المحلول

يمكنك استخدام Application.AddMessageFilter وراقب الرسائل التي تمثل تفاعل المستخدم (على سبيل المثال.الماوس ولوحة المفاتيح وربما تنشيط القائمة).

نصائح أخرى

أفترض أنك تريد اكتشاف وقت الخمول ولكن فقط عندما يكون التطبيق نشطًا.يتعين عليك بعد ذلك تحديد ما تعنيه بالضبط بكون تطبيقك نشطًا.عندما يكون تطبيقك نشطًا (حسب تعريفك الخاص)، يمكنك الاتصال على فترات منتظمة GetLastInputInfo لتحديد وقت الخمول لتطبيقك عندما يكون نشطًا (على سبيل المثال.باستخدام مؤقت من نوع ما).

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

لا ينبغي أن تقلق بشأن GetLastInputInfo توفير معلومات حول الجلسة فقط.إذا تم تسجيل دخول عدة مستخدمين إلى نفس جهاز الكمبيوتر الذي يعمل بنظام Windows، فسيكون لكل منهم جلسة عمل خاصة به، ولكن لا ينبغي أن يؤثر وجود مستخدم آخر خاملاً أو غير نشط في الجلسة على كيفية اكتشاف ما إذا كان مستخدم التطبيق الخاص بك خاملاً.

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

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