Следующей функцией я вывожу следующую информацию о процессе(запущеный блокнот, калькулятор и т.д.): дескриптор процесса, идентификатор процесса, дескриптор и идентификатор первичного потока, код завершения процесса.
| Код | BOOL CALLBACK fDlgInfo(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam) { PROCESS_INFORMATION *lpPi = NULL; HANDLE hProcess = NULL; DWORD ExitCode = 0;
switch (uMsg) { case WM_INITDIALOG: { lpPi = (PROCESS_INFORMATION*)lParam; hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, lpPi->dwProcessId); // Prc id, Prc handle SetIntText(hwndDlg, IDC_STATIC_PH, (DWORD)lpPi->hProcess); SetIntText(hwndDlg, IDC_STATIC_PI, (DWORD)lpPi->dwProcessId); // Thr id, Thr handle SetIntText(hwndDlg, IDC_STATIC_TH, (DWORD)lpPi->hThread); SetIntText(hwndDlg, IDC_STATIC_TI, (DWORD)lpPi->dwThreadId); // Prc ExitCode if (GetExitCodeProcess(hProcess, &ExitCode)) { if (ExitCode==STILL_ACTIVE) { HWND hItem = NULL; hItem = GetDlgItem(hwndDlg, IDC_STATIC_P_EXIT); SendMessage(hItem, WM_SETTEXT, 0L, (LPARAM)"Активен\0"); } else SetIntText(hwndDlg, IDC_STATIC_P_EXIT, (DWORD)ExitCode); } else { LPVOID lpMsgBuf; HWND hItem = NULL;
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); hItem = GetDlgItem(hwndDlg, IDC_STATIC_P_EXIT); SendMessage(hItem, WM_SETTEXT, 0L, (LPARAM)lpMsgBuf); LocalFree( lpMsgBuf ); } CloseHandle(hProcess); return true; } case WM_COMMAND: case IDOK: case IDCANCEL:{EndDialog(hwndDlg, true);return true;} } return false; }
|
В обработчике WM_COMMAND оконнной процедуры создание диалогового окна будет выглядеть след образом:
| Код | /////////////////////////////////////////////////////////////// /////////////////Информация о процессе 0/////////////////////// case IDM_INFO_P0: { DialogBoxParam((HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDD_PROCESS_INFO), hWnd, fDlgInfo, (LPARAM)&pi[0]);
}break; ///////////////////////////////////////////////////////////////
|
Но мне надо, чтобы на это диалоговое окно выводилось и имя процесса(программы). Нипример: Notepad.exe. Как это сделать? Где храниться имя программы(pszApplicationName)? Или всё придётся делать вручную? |