diff --git a/shell/browser/api/atom_api_power_monitor_win.cc b/shell/browser/api/atom_api_power_monitor_win.cc index ad85edddc661..15d914bd7eb8 100644 --- a/shell/browser/api/atom_api_power_monitor_win.cc +++ b/shell/browser/api/atom_api_power_monitor_win.cc @@ -58,10 +58,20 @@ LRESULT CALLBACK PowerMonitor::WndProc(HWND hwnd, WPARAM wparam, LPARAM lparam) { if (message == WM_WTSSESSION_CHANGE) { - if (wparam == WTS_SESSION_LOCK) { - Emit("lock-screen"); - } else if (wparam == WTS_SESSION_UNLOCK) { - Emit("unlock-screen"); + bool should_treat_as_current_session = true; + DWORD current_session_id = 0; + if (!::ProcessIdToSessionId(::GetCurrentProcessId(), ¤t_session_id)) { + LOG(ERROR) << "ProcessIdToSessionId failed, assuming current session"; + } else { + should_treat_as_current_session = + (static_cast(lparam) == current_session_id); + } + if (should_treat_as_current_session) { + if (wparam == WTS_SESSION_LOCK) { + Emit("lock-screen"); + } else if (wparam == WTS_SESSION_UNLOCK) { + Emit("unlock-screen"); + } } } return ::DefWindowProc(hwnd, message, wparam, lparam);