Системные события не работают перед выключениемC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Системные события не работают перед выключением

Сообщение Anonymous »

Я пытаюсь создать прототип приложения для журнала и сохранить активность пользователей. Для этого я использую GetForegroundWindow (), чтобы получить настоящее название приложения. И мне нужно сохранить эти журналы в БД, прежде чем выключить. Я использую некоторые системные события для этого. но это не работает для меня. < /p>
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);

static string connectionString = "XXXXXXXXXXXXXX";
static string filePath = "xxxxxxxxxxxxxxxxxxxxxx";

static Dictionary appDurations = new Dictionary();

static void Main()
{
SystemEvents.PowerModeChanged += async (sender, e) => await OnPowerModeChanged(sender, e);
SystemEvents.SessionEnding += async (sender, e) => await OnSessionEnding(sender, e);
SystemEvents.EventsThreadShutdown += async (sender, e) => await ProcessLogs();
SystemEvents.SessionEnded += async (sender, e) => await ProcessLogs();

string currentApp = "";
DateTime startTime = DateTime.Now;

while (true)
{
string activeApp = GetActiveWindowTitle();

if (activeApp != currentApp)
{
if (!string.IsNullOrEmpty(currentApp))
{
LogAppUsage(currentApp, startTime, DateTime.Now);
}

currentApp = activeApp;
startTime = DateTime.Now;
}

Thread.Sleep(1000);
}
}

static string GetActiveWindowTitle()
{
const int nChars = 256;
StringBuilder buff = new StringBuilder(nChars);
IntPtr handle = GetForegroundWindow();

if (GetWindowText(handle, buff, nChars) > 0)
return buff.ToString();

return "Unknown";
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... e-shutdown
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»