最近一直再找一款可以自动清理内存的工具,发现有一款叫做Rammap的软件清理效果特别好,可是不能自动清理。得益于它的外部接口,我们可以自己写一个程序来实现自动清理。
从这里可以看出,可以利用cmd调用Rammap(请检查自己的Rammap是否支持此功能)
代码:
#include<Windows.h>
#include<shellapi.h>
#include<WinUser.h>
#include<tchar.h>
int main()
{
HWND hw = FindWindow(_T("ConsoleWindowClass"), NULL); //获取句柄
ShowWindow(hw, SW_HIDE); //隐藏
NOTIFYICONDATA nid; //系统托盘
nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
nid.hWnd = hw;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
wcscpy_s(nid.szTip, _T("Rammap自动清理程序"));//鼠标放在托盘图标上时显示的文字
nid.hIcon = LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(IDI_APPLICATION)); //图标
Shell_NotifyIcon(NIM_ADD, &nid);//在托盘区添加图标
while (0)
{
//调用Rammap,可以依照自己的Rammmap名更改
system("RAMMap-64bit -Ew");
system("RAMMap-64bit -Es");
system("RAMMap-64bit -Em");
system("RAMMap-64bit -Et");
system("RAMMap-64bit -E0");
Sleep(60000); //延迟一分钟
}
Shell_NotifyIcon(NIM_DELETE, &nid);//从托盘中删除图标
}
效果图: