Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Unified Diff: tools/telemetry/telemetry/core/platform/win_platform_backend.py

Issue 394923003: [telemetry] Add IPPET power monitor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/platform/win_platform_backend.py
diff --git a/tools/telemetry/telemetry/core/platform/win_platform_backend.py b/tools/telemetry/telemetry/core/platform/win_platform_backend.py
index 4597c40c7c6e84918b1ee20310b09a2d963d6e6c..94f99b338687924e73339fb01cdd1d3c0ccb4051 100644
--- a/tools/telemetry/telemetry/core/platform/win_platform_backend.py
+++ b/tools/telemetry/telemetry/core/platform/win_platform_backend.py
@@ -11,10 +11,14 @@ import time
try:
import pywintypes # pylint: disable=F0401
import win32api # pylint: disable=F0401
+ from win32com.shell import shell # pylint: disable=F0401
+ from win32com.shell import shellcon # pylint: disable=F0401
import win32con # pylint: disable=F0401
import win32process # pylint: disable=F0401
except ImportError:
pywintypes = None
+ shell = None
+ shellcon = None
win32api = None
win32con = None
win32process = None
@@ -201,3 +205,20 @@ class WinPlatformBackend(desktop_platform_backend.DesktopPlatformBackend):
ctypes.windll.psapi.GetPerformanceInfo(
ctypes.byref(performance_info), performance_info.size)
return performance_info
+
+ def LaunchApplication(
+ self, application, parameters=None, elevate_privilege=False):
+ """Launch an application. Returns a PyHANDLE object."""
+
+ # Use ShellExecuteEx() instead of subprocess.Popen()/OpenProcess() to
+ # elevate privileges. A new console will be created if the new process has
+ # different permissions than this process.
+ proc_info = shell.ShellExecuteEx(
+ fMask=shellcon.SEE_MASK_NOCLOSEPROCESS | shellcon.SEE_MASK_NO_CONSOLE,
+ lpVerb='runas' if elevate_privilege else '',
+ lpFile=application,
+ lpParameters=' '.join(parameters) if parameters else [],
+ nShow=win32con.SW_HIDE)
+ if proc_info['hInstApp'] <= 32:
+ raise Exception('Unable to launch %s' % application)
+ return proc_info['hProcess']

Powered by Google App Engine
This is Rietveld 408576698