C+ Builder Как отловить завершение работы windows

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by slider, 4 Jul 2006.

  1. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    497
    Likes Received:
    708
    Reputations:
    748
    C++ Builder 6
    Как отловить завершение работы windows?
    Как отловить завершение сеанса windows?
    Как отловить перезагрузку и тд windows?

    Что то слышал про WM_QUERYENDSESSION
    Как юзать так инепонял!
     
  2. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    Platform SDK: Windows System Information
    How to Log Off the Current User
    To log off the current user, call the ExitWindows or ExitWindowsEx function.


    By default, when an application uses ExitWindows or ExitWindowsEx to log off, the system sends the WM_QUERYENDSESSION message to each window. Applications agree to terminate by returning TRUE when they receive this message. If any application returns FALSE, the log-off operation is canceled.

    When an application returns TRUE for WM_QUERYENDSESSION, it receives the WM_ENDSESSION message and it is terminated, regardless of how the other applications respond to the WM_QUERYENDSESSION message.

    Windows Me/98/95: After all applications return TRUE for WM_QUERYENDSESSION, they receive the WM_ENDSESSION and they are terminated.

    To force all applications to terminate, use ExitWindowsEx, and specify the EXW_FORCE flag. This prevents the system from sending WM_QUERYENDSESSION messages.

    The system also sends the CTRL_LOGOFF_EVENT control signal to every process during a log-off operation. A console application can register a HandlerRoutine to process these messages.

    If the process that called ExitWindowsEx is running in the logon session of the interactive user, all processes in the logon session are terminated. If the process calling ExitWindowsEx is in some other logon session, only the notifications are made; no processes are terminated.


    ...собсна сабж...
     
  3. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    497
    Likes Received:
    708
    Reputations:
    748
    Собственно хэлп я читал но так и недопёр!
    как юзать так и непонял :)
     
  4. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    добавь обработчик сообщения. как это делается в билдере 6, можно зазыреть в экзамплах. apps/trayicon.

    BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER(WM_DRAWITEM,TMessage,DrawItem)
    MESSAGE_HANDLER(MYWM_NOTIFY,TMessage,MyNotify)
    END_MESSAGE_MAP(TForm)

    ставишь аналогичный хендлер на WM_QUERYENDSESSION.
    wParam не юзается, а lParam указывает опцию логоффа.
     
    1 person likes this.
  5. Rabid Rabbit

    Rabid Rabbit Elder - Старейшина

    Joined:
    31 Aug 2003
    Messages:
    161
    Likes Received:
    15
    Reputations:
    -9
    sn0w MFC - зло, юзай винапи)
    ЗЫ билдер тожа зло.
     
  6. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    497
    Likes Received:
    708
    Reputations:
    748
    Спасиб!!!
    Попробую!