#define _CRT_SECURE_NO_WARNINGS #include <string> #include <windows.h> #include <stdint.h> #include <tlhelp32.h> #include <iostream> #include <vector> #include <time.h> #include <fstream> #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" ) using namespace std; //获取可用物理内存 DWORD getWin_MemUsage(){ MEMORYSTATUS ms; ::GlobalMemoryStatus(&ms); return ms.dwAvailPhys; //返回可用物理内存 } //获取总物理内存大小 DWORD getWin_MemUsage_all(){ MEMORYSTATUS ms; ::GlobalMemoryStatus(&ms); return ms.dwTotalPhys; //返回可用物理内存 } //获取内存使用率 DWORD getWin_MemUsage_shiyonglv(){ MEMORYSTATUS ms; ::GlobalMemoryStatus(&ms); return ms.dwMemoryLoad; //返回可用物理内存 } char* time_now() //返回当前日期时间 { time_t rawtime; struct tm *info; char buffer[80]; time(&rawtime); info = localtime(&rawtime); strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", info); return buffer; } DWORD GetProcessIdFromName(string name) //根据进程名称获取进程pid并返回进程pid { HANDLE hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hsnapshot == INVALID_HANDLE_VALUE) { printf("CreateToolhelp32Snapshot Error!\n"); return 0; } PROCESSENTRY32 pe; pe.dwSize = sizeof(PROCESSENTRY32); int flag = Process32First(hsnapshot, &pe); while (flag != 0) { if (strcmp(pe.szExeFile, name.c_str()) == 0) { return pe.th32ProcessID; } flag = Process32Next(hsnapshot, &pe); } CloseHandle(hsnapshot); return 0; } int KillProcess(int id) //根据进程ID杀进程 { HANDLE hProcess = NULL; hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, id); //打开目标进程 if (hProcess == NULL) { //wprintf(L"\nOpen Process fAiled:%d\n", GetLastError()); return -1; } else{ DWORD ret = TerminateProcess(hProcess, 0); // printf("Kill OK!\n"); if (ret == 0) { // wprintf(L"%d", GetLastError()); } } //结束目标进程 return -1; } void write_file(int num)// 写配置文件 传参const char* timenow, int p_id, const char* p_name { ofstream aa; aa.open("c:\\123\\test.log", ios::app); DWORD keyong = getWin_MemUsage(); DWORD zongdaxiao = getWin_MemUsage_all(); DWORD shiyonglv = getWin_MemUsage_shiyonglv(); // printf("[%s]内存使用情况:使用率:%d%% 可用/总大小: %d //%d \n", time_now(), shiyonglv, keyong, zongdaxiao); aa << "[" << time_now() << "]" << "[网络]" << "操作" << "第" << num << "次:" << "内存使用率:" << shiyonglv << "%" << "可用/总大小:" << keyong << "//" << zongdaxiao << endl; aa.close(); } void kill()// 读取配置文件 { int a = GetProcessIdFromName("Hash.exe"); int b = GetProcessIdFromName("calc.exe"); KillProcess(a); KillProcess(b); Sleep(2000); } //启动进程测试32位和64位 void create_process() { WinExec("C:\\MySP\\常用软件\\文件哈希计算\\Hash.exe", SW_SHOWMAXIMIZED); Sleep(1500); //printf("111111111\n"); WinExec("C:\\Windows\\System32\\calc.exe", SW_SHOWMAXIMIZED); Sleep(1500); //printf("111111111\n"); } int main() { int num = 1;//书写次数 int cnt = 1; while (1) { create_process(); kill(); Sleep(3000); if (num % 10 == 0) { write_file(num); } num++; } return 0; }
原文:https://www.cnblogs.com/shenji/p/12584422.html