From b3af40443e253b9e5231bdb37ca5f2cb29895d03 Mon Sep 17 00:00:00 2001 From: Jeremy Kloth Date: Mon, 15 Oct 2018 15:29:11 -0600 Subject: [PATCH 1/3] P/Invoke QueryFullProcessImageName to get the process' name so as to allow the 32-bit MSBuild to access 64-bit processes names. --- PCbuild/pyproject.props | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props index 7016130b6fe8621..cd3b488e098c5d6 100644 --- a/PCbuild/pyproject.props +++ b/PCbuild/pyproject.props @@ -109,19 +109,33 @@ - + + + + + From b69359897a2819fcd212185bcf40f9eec2a024f7 Mon Sep 17 00:00:00 2001 From: Jeremy Kloth Date: Mon, 22 Oct 2018 09:19:27 -0600 Subject: [PATCH 2/3] Removed tabs --- PCbuild/pyproject.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props index cd3b488e098c5d6..8291ac9cbc1c646 100644 --- a/PCbuild/pyproject.props +++ b/PCbuild/pyproject.props @@ -123,8 +123,8 @@ public override bool Execute() { Log.LogMessage("Looking for " + fullPath, MessageImportance.Normal); foreach (Process p in Process.GetProcesses()) { try { - int pathLength = 32768; - StringBuilder pathBuilder = new StringBuilder(pathLength); + int pathLength = 32768; + StringBuilder pathBuilder = new StringBuilder(pathLength); QueryFullProcessImageName(p.Handle, 0, pathBuilder, ref pathLength); string exeName = Path.GetFullPath(pathBuilder.ToString()); Log.LogMessage("Found running process: " + exeName, MessageImportance.Low); From be1fe06b081b2a9b35e644e3c6c1ddc290a38b62 Mon Sep 17 00:00:00 2001 From: Jeremy Kloth Date: Mon, 22 Oct 2018 09:39:25 -0600 Subject: [PATCH 3/3] Only handle the process name on success. --- PCbuild/pyproject.props | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props index 8291ac9cbc1c646..6d36977456e092b 100644 --- a/PCbuild/pyproject.props +++ b/PCbuild/pyproject.props @@ -125,12 +125,13 @@ public override bool Execute() { try { int pathLength = 32768; StringBuilder pathBuilder = new StringBuilder(pathLength); - QueryFullProcessImageName(p.Handle, 0, pathBuilder, ref pathLength); - string exeName = Path.GetFullPath(pathBuilder.ToString()); - Log.LogMessage("Found running process: " + exeName, MessageImportance.Low); - if (fullPath.Equals(exeName, StringComparison.OrdinalIgnoreCase)) { - Log.LogMessage("Terminating " + exeName, MessageImportance.High); - p.Kill(); + if (QueryFullProcessImageName(p.Handle, 0, pathBuilder, ref pathLength)) { + string exeName = Path.GetFullPath(pathBuilder.ToString()); + Log.LogMessage("Found running process: " + exeName, MessageImportance.Low); + if (fullPath.Equals(exeName, StringComparison.OrdinalIgnoreCase)) { + Log.LogMessage("Terminating " + exeName, MessageImportance.High); + p.Kill(); + } } } catch { }