#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;
}