}
//
// ФУНКЦИЯ: InitInstance(HINSTANCE, int)
//
// НАЗНАЧЕНИЕ: сохраняет обработку экземпляра и создает главное окно.
//
// КОММЕНТАРИИ:
//
// В данной функции дескриптор экземпляра сохраняется в глобальной переменной, а также
// создается и выводится на экран главное окно программы.
//InitInstance(HINSTANCE hInstance, int nCmdShow)
{hWnd;= hInstance; // Сохранить дескриптор экземпляра в глобальной переменной= CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);(!hWnd)
{FALSE;
}
// Set the timer for the mousetrap.uResult = SetTimer(hWnd, // handle to main window_TIMER, // timer identifier
, // 1-second interval
(TIMERPROC) NULL); // no timer callback(uResult == 0)
{(hWnd, "No timer is available.", "Error", MB_OK);
}(hWnd, nCmdShow);(hWnd);TRUE;
}
//
// ФУНКЦИЯ: WndProc(HWND, UINT, WPARAM, LPARAM)
//
// НАЗНАЧЕНИЕ: обрабатывает сообщения в главном окне.
//
// WM_COMMAND- обработка меню приложения
// WM_PAINT-Закрасить главное окно
// WM_DESTROY - ввести сообщение о выходе и вернуться.
//
//CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{wmId, wmEvent;ps;hdc,hmdc;(message)
{WM_COMMAND:= LOWORD(wParam);= HIWORD(wParam);
// Разобрать выбор в меню:(wmId)
{IDM_ABOUT:(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);;IDM_START_EXE:(hWnd);;IDM_EXIT:
// !!!! TODO - добавить код убивания процессов(hWnd);;:DefWindowProc(hWnd, message, wParam, lParam);
};WM_TIMER: {(int i=0; i<current_process; i++) {(IsProcessStillRunning(processes[i])) processes[i].nCount++;
}rect;(hWnd, &rect);(hWnd, &rect, true);;
}WM_RBUTTONDOWN:
{(button_check==0)
{_check=1;
}_check=0;;
}WM_PAINT: {(button_check==1)
{= BeginPaint(hWnd, &ps);
// TODO: добавьте любой код отрисовки...
// тут пробежаться циклом по processes и вывести информацию= CreatePen(0, 2, RGB(0,0,0xFF));(hdc, hPen);process_str[1024];temp[ ] = "Name: %s Process ID: %d Thread ID: %d Live time: %d sec, Active: %s";(int i=0; i<current_process; i++) {(process_str, temp, processes[i].process_name, processes[i].pi.dwProcessId, processes[i].pi.dwThreadId, processes[i].nCount,(processes[i]) ? "ACTIVE" : "STOPPED");len=0; while (process_str[len]!=0) len++;(hdc, 400, 400 + 25* i, process_str, len );
}(hWnd,NULL);(hWnd, &ps);;
}= BeginPaint(hWnd, &ps);
// TODO: добавьте любой код отрисовки...
// тут пробежаться циклом по processes и вывести информацию= CreatePen(0, 2, RGB(0,0,0xFF));(hdc, hPen);process_str[1024];temp[ ] = "Name: %s Active: %s";(int i=0; i<current_process; i++) {(process_str, temp, processes[i].process_name,(processes[i]) ? "ACTIVE" : "STOPPED");len=0; while (process_str[len]!=0) len++;(hdc, 400, 400 + 25* i, process_str, len );
}(hWnd,NULL);(hWnd, &ps);;
}WM_DESTROY:(hWnd, IDT_TIMER);(int i=0; i<current_process; i++)
{(IsProcessStillRunning(processes[i])) TerminateProcess(processes[i].pi.hProcess, 0);
}(0);;:DefWindowProc(hWnd, message, wParam, lParam);
}0;
}IsProcessStillRunning(PROCESS p)
{code;GetExitCodeProcess(p.pi.hProcess, &code) !=0 && code == STILL_ACTIVE;
}
// Обработчик сообщений для окна "О программе"._PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{_PARAMETER(lParam);(message)
{WM_INITDIALOG:(INT_PTR)TRUE;WM_COMMAND:(LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{(hDlg, LOWORD(wParam));(INT_PTR)TRUE;
};
}(INT_PTR)FALSE;
}StartExe(HWND hWnd)
{(current_process >= MAX_PROCESSES) {(hWnd, "Maximum number of processes is being running.", "Error", MB_OK);;
}(&of, sizeof(of));(&filename, sizeof(filename));.lStructSize=OPENFILENAME_SIZE_VERSION_400A; /*размер структуры OPENFILENAME*/.hwndOwner=NULL ; /*дескриптор родительского окна*/.hInstance=hInst; /*дескриптор экземпляра программы*/.lpstrFilter=filters;/*фильтр файлов (тип)*/.lpstrCustomFilter=NULL; /*еще один фильтр: нам не надо*/.nMaxCustFilter=0; /*нам не надо*/.nFilterIndex=1; /*количество заданных нами фильтров*/.lpstrFile=filename; /*адрес буфера под имя файла*/.nMaxFile=MAX_PATH; /*размер буфера под имя файла*/.lpstrFileTitle=NULL; /*буфер под рекомендуемый заголовок: нам не надо*/.nMaxFileTitle=0; /*нам не надо*/.lpstrInitialDir=NULL; /*стартовый каталог: текущий*/.Flags=OFN_PATHMUSTEXIST; /*разные флаги*/(GetOpenFileName(&of)) {
// действия в случае успешного выбора файла /(NULL, of.lpstrFile, NULL, NULL, NULL, NULL, NULL, NULL, &(processes[current_process].si), &(processes[current_process].pi));(processes[current_process].process_name,of.lpstrFile);[current_process].nCount=0;_process++;
}
}