سؤال

لا أحد يعرف كيف يمكن أن تعطيل برمجيا / تمكين وضع السكون على ويندوز موبايل؟ شكرا!

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

المحلول

إذا كنت تريد البرنامج لعدم وضعها على النوم في حين انها تعمل، وأفضل وسيلة لخلق وظيفة نوع KeepAlive أن يدعو SystemIdleTimerReset، SHIdleTimerReset ويحاكي لمسة مفتاح. ثم عليك أن يطلق عليه الكثير، وأساسا في كل مكان.

#include <windows.h>
#include <commctrl.h>

extern "C"
{
    void WINAPI SHIdleTimerReset();
};

void KeepAlive()
{
    static DWORD LastCallTime = 0;
    DWORD TickCount = GetTickCount();
    if ((TickCount - LastCallTime) > 1000 || TickCount < LastCallTime) // watch for wraparound
    {
        SystemIdleTimerReset();
        SHIdleTimerReset();
        keybd_event(VK_LBUTTON, 0, KEYEVENTF_SILENT, 0);
        keybd_event(VK_LBUTTON, 0, KEYEVENTF_KEYUP | KEYEVENTF_SILENT, 0);
        LastCallTime = TickCount;
    }
}

وهذه الطريقة لا تعمل إلا عندما يبدأ المستخدم التطبيق يدويا.

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

if(!::PowerPolicyNotify (PPN_UNATTENDEDMODE, TRUE))
{
    // handle error
}

// do long running process

if(!::PowerPolicyNotify (PPN_UNATTENDEDMODE, FALSE))
{
    // handle error
}

وأثناء استخدام وضع غير مراقب، ما زالت هناك حاجة لاستدعاء KeepAlive الكثير، يمكنك استخدام موضوع منفصل ان ينام لميلي ثانية x و يدعو حفاظ funcation على قيد الحياة.

تجدر الإشارة إلى أن الوضع غير المراقب لا يجلب عليه للخروج من وضع السكون، فإنه يضع الجهاز في حالة نصف مستيقظا غريبة.

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

نصائح أخرى

إدارة الطاقة التسجيل إعداد التي تؤثر على النوم محدد حالة تريد (المهلة، الخليط، والطاقة AC، الخ) وSetEvent على حدث نظام اسمه يسمى "PowerManager / ReloadActivityTimeouts" لنقول للنظام التشغيل لتحميل الإعدادات.

وربما عن طريق تعديل "الدول قوة النظام" كما صفها هنا ( ولكن في ج #)

ويصف هذه المادة أيضا وسيلة لمنع جهاز الهاتف النقال إلى النوم (وهي ليست بالضبط ما كنت قد تريد)، عن طريق استدعاء SystemIdleTimerReset وظيفة الأم () دورية (لمنع الجهاز من تشغيل لأسفل).

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