Left: | ||
Right: |
OLD | NEW |
---|---|
1 #include <stdexcept> | 1 #include <stdexcept> |
2 #include <functional> | 2 #include <functional> |
3 #include <wctype.h> | 3 #include <wctype.h> |
4 // <thread> is C++11, but implemented in VS2012 | 4 // <thread> is C++11, but implemented in VS2012 |
5 #include <thread> | 5 #include <thread> |
6 | 6 |
7 #include "installer-lib.h" | 7 #include "installer-lib.h" |
8 #include "process.h" | 8 #include "process.h" |
9 #include "handle.h" | 9 #include "handle.h" |
10 #include "session.h" | 10 #include "session.h" |
11 | 11 |
12 //------------------------------------------------------- | 12 //------------------------------------------------------- |
13 //------------------------------------------------------- | 13 //------------------------------------------------------- |
14 typedef int (__stdcall *IsImmersiveDynamicFunc)(HANDLE); | 14 typedef int (__stdcall *IsImmersiveDynamicFunc)(HANDLE); |
15 bool process_by_any_exe_not_immersive::operator()( const PROCESSENTRY32W & proce ss ) | 15 bool process_by_any_exe_not_immersive::operator()( const PROCESSENTRY32W & proce ss ) |
16 { | 16 { |
17 if (processNames.find(process.szExeFile) != processNames.end()) | 17 if (processNames.find(process.szExeFile) != processNames.end()) |
18 { | 18 { |
19 // Make sure the process is still alive | 19 // Make sure the process is still alive |
20 Windows_Handle procHandle = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pr ocess.th32ProcessID); | 20 HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, process.th32Process ID); |
21 if ((procHandle == NULL) || (procHandle == INVALID_HANDLE_VALUE)) return fal se; | 21 // OpenProcess does not return INVALID_HANDLE VALUE, so a simple check is f ine. |
Eric
2014/07/31 15:37:08
You can kill this comment in your own patch set.
| |
22 if (!h) return false; | |
Eric
2014/07/31 15:44:24
OOPS! This should be 'return true'. If the process
| |
23 Windows_Handle procHandle(h); | |
22 | 24 |
23 DWORD exitCode; | 25 DWORD exitCode; |
24 if (!GetExitCodeProcess(procHandle, &exitCode)) return false; | 26 if (!GetExitCodeProcess(procHandle, &exitCode)) return false; |
25 | 27 |
26 if (exitCode != STILL_ACTIVE) return false; | 28 if (exitCode != STILL_ACTIVE) return false; |
27 | 29 |
28 // Check if this is a Windows Store app process (we don't care for IE in Mod ern UI) | 30 // Check if this is a Windows Store app process (we don't care for IE in Mod ern UI) |
29 Windows_Module_Handle user32Dll(LoadLibrary(L"user32.dll")); | 31 HMODULE m = LoadLibrary(L"user32.dll"); |
30 if (!user32Dll) return true; | 32 if (!m) return true; |
33 Windows_Module_Handle user32Dll(m); | |
31 | 34 |
32 IsImmersiveDynamicFunc IsImmersiveDynamicCall = (IsImmersiveDynamicFunc)GetP rocAddress(user32Dll, "IsImmersiveProcess"); | 35 IsImmersiveDynamicFunc IsImmersiveDynamicCall = (IsImmersiveDynamicFunc)GetP rocAddress(user32Dll, "IsImmersiveProcess"); |
33 if (!IsImmersiveDynamicCall) return true; | 36 if (!IsImmersiveDynamicCall) return true; |
34 | 37 |
35 BOOL retValue = !IsImmersiveDynamicCall(procHandle); | 38 BOOL retValue = !IsImmersiveDynamicCall(procHandle); |
36 | 39 |
37 return retValue; | 40 return retValue; |
38 } | 41 } |
39 return false; | 42 return false; |
40 } | 43 } |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
301 if ( ! is_running() ) | 304 if ( ! is_running() ) |
302 { | 305 { |
303 return true ; | 306 return true ; |
304 } | 307 } |
305 } | 308 } |
306 // Assert is_running() | 309 // Assert is_running() |
307 } | 310 } |
308 // No control path leaves the for-loop. | 311 // No control path leaves the for-loop. |
309 } ; | 312 } ; |
310 | 313 |
OLD | NEW |