Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
2 / 2 / 2
Регистрация: 30.01.2013
Сообщений: 150
1

События сессии пользователя (вход/выход/блокировка/разблокировка/сон/выход из сна/выключение/перезапуск)

16.08.2019, 18:35. Просмотров 352. Ответов 2

Добрый день.
Мне нужно слушать эти события (указаны в заголовке) в реальном времени для логирования. Можно слушать разные события разными способами. Способы прослушки этих событий должны обязательно работать на Windows 10. События выключения/перезапуска понятно как слушать, но не понятно как их отличать. Нужен способ, который позволит их отличить.
Везде вижу инфу только про способ через SystemEvents.SessionSwitch Event из C# .NET, но он мне не очень нравится, придётся скрещивать фреймворк для C/C++ с фреймворком для C#. Оставлю его на крайний случай.
Предлагайте все варианты, желательно как можно менее костыльные. Можно использовать WMI (если кто знает его хорошо, то прошу помочь именно с этим способом: видел, что вроде бы можно через WMI, но хорошего описания не нашёл). Так же можно использовать другие технологии и API, главное, чтобы они работали в Windows 10. Я знаю, что существует несколько способов перехвата системных события в Windows, но на русском или простом английском ничего не нашёл.
Прошу писать, даже если у вас просто появилась догадка о том, как это можно сделать.
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2019, 18:35
Ответы с готовыми решениями:

Выход-Вход (Цикл)
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения. // #include...

Функция, отслеживающая вход в систему Windows, а также выход из нее
Необходимо написать функцию, которая будет отслеживать вход в систему Windows, выход из системы и...

Выход из цикла при наступлении события
Я знаю WinAPI довольно плохо, но вопрос такой: допустим у нас есть бесконечный цикл: for (int i =...

Выход из приложения
Здравствуйте, снова я с тупыми вопросами по winapi. Пытаюсь сделать некое подобие калькулятора,...

2
Почетный модератор
7266 / 2542 / 256
Регистрация: 29.07.2006
Сообщений: 13,465
16.08.2019, 19:13 2
WM_POWERBROADCAST, WM_QUERYENDSESSION
0
Software Developer
301 / 217 / 111
Регистрация: 03.05.2017
Сообщений: 1,036
16.08.2019, 19:53 3
Вот, кусок кода из недавнего проекта.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <windows.h>
#include <wtsapi32.h>
 
#pragma comment(lib, "wtsapi32.lib")
 
...
 
    case WM_CREATE:
    {
        WTSRegisterSessionNotification(hWnd, NOTIFY_FOR_ALL_SESSIONS);
        ...
    }
    break;
 
    case WM_WTSSESSION_CHANGE:
    {
        if (wParam == WTS_SESSION_UNLOCK)
        {
            ...
        }
    }
    break;
 
    case WM_DESTROY:
    {
        WTSUnRegisterSessionNotification(hWnd);
        ...
    }
    break;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2019, 19:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Корректный выход из приложения
Привет, при нажатии на кнопку моя программа должна закрыться, пишу так: PostQuitMessage(0); Но...

Выход из полноэкранного режима
Как выключить полноэкранный режим DirectX ? (зная только имя окна, ну и через FindWindow получаю...

Память- выход за ее пределы
Собственно вылетает такая штука суть: чтение данных из файла и вывод на экран, а именно...

Определить выход из спящего режима
Можно ли как-то определить, когда компьютер выходит из спящего режима? Мне нужно написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.