| 3304 | } |
| 3305 | |
| 3306 | void CShellProc::OnShellFinished(BOOL abSucceeded, HINSTANCE ahInstApp, HANDLE ahProcess) |
| 3307 | { |
| 3308 | #ifdef _DEBUG |
| 3309 | DWORD dwProcessID = 0; |
| 3310 | if (abSucceeded && gfGetProcessId && ahProcess) |
| 3311 | { |
| 3312 | dwProcessID = gfGetProcessId(ahProcess); |
| 3313 | } |
| 3314 | std::ignore = dwProcessID; |
| 3315 | #endif |
| 3316 | |
| 3317 | // InjectHooks & ResumeThread тут делать не нужно, просто вернуть параметры, если было переопределение |
| 3318 | if (mlp_SaveExecInfoW) |
| 3319 | { |
| 3320 | mlp_SaveExecInfoW->hInstApp = ahInstApp; |
| 3321 | mlp_SaveExecInfoW->hProcess = ahProcess; |
| 3322 | } |
| 3323 | else if (mlp_SaveExecInfoA) |
| 3324 | { |
| 3325 | mlp_SaveExecInfoA->hInstApp = ahInstApp; |
| 3326 | mlp_SaveExecInfoA->hProcess = ahProcess; |
| 3327 | } |
| 3328 | |
| 3329 | if (mb_InShellExecuteEx) |
| 3330 | { |
| 3331 | if (gnInShellExecuteEx > 0) |
| 3332 | gnInShellExecuteEx--; |
| 3333 | mb_InShellExecuteEx = FALSE; |
| 3334 | } |
| 3335 | } |
| 3336 | |
| 3337 | void CShellProc::LogShellString(LPCWSTR asMessage) const |
| 3338 | { |
no outgoing calls
no test coverage detected