Страницы

Поиск по вопросам

понедельник, 30 декабря 2019 г.

C# Запуск программы после входа пользователем в систему

#c_sharp


Есть программа, которая прописывает себя в автозагрузку. Все работает, все отлично.

RegistryKey reg;
reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\",
true);
reg.SetValue("PCVision", Assembly.GetExecutingAssembly().Location);


Но есть одна проблема, когда пользователь ставит и снимает компьютер со сна - программа
понятным образом не запускается. так как полноценной перезагрузки системы не происходит.

Собственно вопрос, возможно кто-то из вас уже ранее стыкался с подобным и знает как
правильно выйти из этой ситуации.
    


Ответы

Ответ 1



Сомневаюсь, что реестре есть раздел, отвечающий за это. Например, гугл молчит на запрос вида "run program after power change". Да и с трудом представляю когда бы это могло кому-нибудь понадобиться => Microsoft, скорее всего, не стали реализовывать невостребованный функционал. Если бы это и было, то в пользовательском интерфейсе, где-нибудь рядом с местом куда добавляются программы в обычную автозагрузку. Например, прикладная программа может поймать данные события как в этом примере: SystemEvents.PowerModeChanged += OnPowerChange; private void OnPowerChange(object s, PowerModeChangedEventArgs e) { switch ( e.Mode ) { case PowerModes.Resume: break; case PowerModes.Suspend: break; } } Получается, что самое простое - это в фоне крутить какую-нибудь программку/сервис, которая слушает события изменения питания и на основании этого запускает нужный софт.

Ответ 2



Попробуйте запустить приложение(напишите свою службу, которая будет следить, за работой приложения и когда надо запускать.), чтобы поймать событие: Microsoft.Win32.SystemEvents.PowerModeChanged += this.SystemEvents_PowerModeChanged; private void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e) { if (e.Mode == PowerModes.Resume) { //Ваш код } } ну или через планировщик заданий , триггер на следующее событие: Журнал Microsoft-Windows-Diagnostics-Performance Источник Diagnostics-Performance Код события 300 или же на "At Workstation Unlock"

Комментариев нет:

Отправить комментарий