// Copyright (c) 2013 GitHub, Inc. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "browser/browser.h" #include #include "base/base_paths.h" #include "base/file_version_info.h" #include "base/files/file_path.h" #include "base/memory/scoped_ptr.h" #include "base/path_service.h" #include "base/strings/utf_string_conversions.h" namespace atom { namespace { BOOL CALLBACK WindowsEnumerationHandler(HWND hwnd, LPARAM param) { DWORD target_process_id = *reinterpret_cast(param); DWORD process_id = 0; GetWindowThreadProcessId(hwnd, &process_id); if (process_id == target_process_id) { SetFocus(hwnd); return FALSE; } return TRUE; } } // namespace void Browser::Terminate() { is_quiting_ = true; PostQuitMessage(0); } void Browser::Focus() { // On Windows we just focus on the first window found for this process. DWORD pid = GetCurrentProcessId(); EnumWindows(&WindowsEnumerationHandler, reinterpret_cast(&pid)); } std::string Browser::GetVersion() { base::FilePath path; if (PathService::Get(base::FILE_EXE, &path)) { scoped_ptr version_info( FileVersionInfo::CreateFileVersionInfo(path)); return UTF16ToUTF8(version_info->product_version()); } return ""; } void Browser::CancelQuit() { // TODO: Research on how to cancel shutdown in Windows. } } // namespace atom