Определить состояние крышки ноутбука

Тема в разделе "WASM.BEGINNERS", создана пользователем tester3000, 9 май 2011.

  1. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    Подскажите как винда определяет состояние (закрыта или открыта) крышки ноутбука или как можно отследить сообщения винды при закрытии крышки ноута искал в гугле чет нечего путного не нашел :dntknw:
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    WM_POWERBROADCAST
     
  3. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    Не подходит ведать другое сообщение посылает Windows 7 нашел пример использования WM_POWERBROADCAST вот фрагмент кода (полный вариант прикрепил):

    Код (Text):
    1. case WM_POWERBROADCAST:
    2.             switch (wParam)
    3.             {
    4.                 case (PBT_APMBATTERYLOW):
    5.                     MessageBox(hWnd, "Battery Low!", "Info", MB_OK);
    6.                     //Switch into high power saving mode
    7.                     break;
    8.                 case (PBT_APMOEMEVENT):
    9.                     MessageBox(hWnd, "OEM-Defined event occured.", "Info", MB_OK);
    10.                     break;
    11.                 case (PBT_APMPOWERSTATUSCHANGE):
    12.                     MessageBox(hWnd, "Power Status Change occured.", "Info", MB_OK);
    13.                     SYSTEM_POWER_STATUS SPS;
    14.                     if (GetSystemPowerStatus(&SPS) == 0)
    15.                         MessageBox(hWnd, "GetSystemPowerStatus Failed!", "Error", MB_OK);
    16.                     else
    17.                     {
    18.                         //If the lost AC power, move into power saving mode
    19.                         //If the system recovered AC power, move into feature rich mode
    20.                     }
    21.                     break;
    22.                 case (PBT_APMQUERYSUSPEND):
    23.                     MessageBox(hWnd, "Request for permission to suspend.", "Info", MB_OK);
    24.                     //return TRUE allow suspend, return BROADCAST_QUERY_DENY to not allow.
    25.                     break;
    26.                 case (PBT_APMQUERYSUSPENDFAILED):
    27.                     MessageBox(hWnd, "Won't be going into suspend after all.", "Info", MB_OK);
    28.                     break;
    29.                 case (PBT_APMRESUMEAUTOMATIC):
    30.                     MessageBox(hWnd, "Automatic resume accored", "Info", MB_OK);
    31.                     break;
    32.                 case (PBT_APMRESUMECRITICAL):
    33.                     MessageBox(hWnd, "Resuming from critial suspend due to low battery", "Info", MB_OK);
    34.                     break;
    35.                 case (PBT_APMRESUMESUSPEND):
    36.                     MessageBox(hWnd, "Operation resuming after suspension.", "Info", MB_OK);
    37.                     break;
    38.                 case (PBT_APMSUSPEND):
    39.                     MessageBox(hWnd, "System is suspending operation.", "Info", MB_OK);
    40.                     break;
    41.                 default:
    42.                     //Unknown case hit
    43.                     assert(0);
    44.             }
    45.             break;
    46.         default:
    47.             return DefWindowProc(hWnd, message, wParam, lParam);
    Так вот когда закрываю и потом открываю крышку ноута ни один MessageBox не срабатывает но монитор при этом гаснет может кто подскажет как отследить это сообщение
     
  4. tester3000

    tester3000 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2006
    Сообщения:
    140
    Все вопрос закрыт сам нашел WM_DEVICECHANGE.