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 "process.h" | 8 #include "process.h" |
8 | 9 |
9 //------------------------------------------------------- | 10 //------------------------------------------------------- |
10 // Windows_Handle | |
11 //------------------------------------------------------- | |
12 Windows_Handle::Windows_Handle( HANDLE h ) | |
13 : handle( h ) | |
14 { | |
15 validate_handle() ; | |
16 } | |
17 | |
18 Windows_Handle::~Windows_Handle() | |
19 { | |
20 CloseHandle( handle ) ; | |
21 } | |
22 | |
23 void Windows_Handle::operator=( HANDLE h ) | |
24 { | |
25 this -> ~Windows_Handle() ; | |
26 handle = h ; | |
27 validate_handle() ; | |
28 } | |
29 | |
30 void Windows_Handle::validate_handle() | |
31 { | |
32 if ( handle == INVALID_HANDLE_VALUE ) | |
33 { | |
34 throw std::runtime_error( "Invalid handle" ) ; | |
35 } | |
36 } | |
37 | |
38 //------------------------------------------------------- | |
39 // process_by_name_CI | 11 // process_by_name_CI |
40 //------------------------------------------------------- | 12 //------------------------------------------------------- |
41 process_by_name_CI::process_by_name_CI( const wchar_t * name ) | 13 process_by_name_CI::process_by_name_CI( const wchar_t * name ) |
42 : name( name ), length( wcslen( name ) ) | 14 : name( name ), length( wcslen( name ) ) |
43 {} | 15 {} |
44 | 16 |
45 bool process_by_name_CI::operator()( const PROCESSENTRY32W & process ) | 17 bool process_by_name_CI::operator()( const PROCESSENTRY32W & process ) |
46 { | 18 { |
47 return 0 == wcsncmpi( process.szExeFile, name, length ) ; | 19 return 0 == wcsncmpi( process.szExeFile, name, length ) ; |
48 } | 20 } |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 // creator_process | 96 // creator_process |
125 //------------------------------------------------------- | 97 //------------------------------------------------------- |
126 DWORD creator_process( HWND window ) | 98 DWORD creator_process( HWND window ) |
127 { | 99 { |
128 DWORD pid ; | 100 DWORD pid ; |
129 DWORD r = GetWindowThreadProcessId( window, & pid ) ; | 101 DWORD r = GetWindowThreadProcessId( window, & pid ) ; |
130 if ( r == 0 ) | 102 if ( r == 0 ) |
131 { | 103 { |
132 // Assert GetWindowThreadProcessId returned an error | 104 // Assert GetWindowThreadProcessId returned an error |
133 // If the window handle is invalid, we end up here. | 105 // If the window handle is invalid, we end up here. |
134 throw std::runtime_error( "" ) ; | 106 throw windows_api_error( "GetWindowThreadProcessId", r ) ; |
135 } | 107 } |
136 return pid ; | 108 return pid ; |
137 } | 109 } |
138 | 110 |
139 //------------------------------------------------------- | 111 //------------------------------------------------------- |
140 // Snapshot | 112 // Snapshot |
141 //------------------------------------------------------- | 113 //------------------------------------------------------- |
142 Snapshot::Snapshot() | 114 Snapshot::Snapshot() |
143 : handle( ::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ) ) | 115 : handle( ::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ) ) |
144 { | 116 { |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 if ( ! is_running() ) | 379 if ( ! is_running() ) |
408 { | 380 { |
409 return true ; | 381 return true ; |
410 } | 382 } |
411 } | 383 } |
412 // Assert is_running() | 384 // Assert is_running() |
413 } | 385 } |
414 // No control path leaves the for-loop. | 386 // No control path leaves the for-loop. |
415 } ; | 387 } ; |
416 | 388 |
OLD | NEW |