Вы должны войти, чтобы создавать сообщения и темы.

Автоочистка при достижении %

Страница 1 из 2►

Всем привет, задался вопросом как сделать автоочитску при достижении процента, вот картинка, подскажите пожалуйста как это можно реализовать, может кто-то это уже делал.

Привет 🖐
Не очень понятно, о какой конкретно очистке идёт речь.
Но так или иначе, обычно просто занятое делим на общее и умножаем на 100 ➜ получаем процент занятого от общего.

Лайкнули Илья и Глеб
ИльяГлеб
В любой непонятной ситуации переходи на beta  © Win 10 Tweaker

Очистка оперативной памяти, пытался в интернете найти но увы.
Я пытался вот так.
public ulong TotalRam() => new ComputerInfo().TotalPhysicalMemory;
public ulong FreeRam() => new ComputerInfo().AvailablePhysicalMemory;
ulong num;
num = (TotalRam() - FreeRam()) * 100 / TotalRam();
Но у меня не чего не получилось(.

Спасибо Хачатур, напряг извилины и нашел решение 🧠👍

Ошибся, все равно не работает, попробовал так показалось заработало, но это был обработчик СкопированоCheckedChanged , что то я растерялся 😞

if (поистечению5toolStripMenuItem1.Checked)
{
    ManagementObjectSearcher ramMonitor = new ManagementObjectSearcher("SELECT TotalVisibleMemorySize,FreePhysicalMemory FROM Win32_OperatingSystem");
    foreach (ManagementObject objram in ramMonitor.Get())
    {
        ulong totalRam = Convert.ToUInt64(objram["TotalVisibleMemorySize"]);
        ulong busyRam = totalRam - Convert.ToUInt64(objram["FreePhysicalMemory"]);
        if (busyRam * 100 / totalRam >= 20)
        {
            if (worksettoolStripMenuItem9.Checked)
            {
                MemoryClean.EmptyWorkingSet();
            }
        }
    }
}

 

Добрый день. Твой код работает как надо, возможно, Твои проверки Скопировано.Checked не дают запустится нужному Тебе методу

Данный код выводит такое же значение, что и трей-виджет Win 10 Tweaker

foreach (var RAM in new ManagementObjectSearcher("SELECT TotalVisibleMemorySize,FreePhysicalMemory FROM Win32_OperatingSystem").Get()) {

    ulong
        totalRAM = Convert.ToUInt64(RAM["TotalVisibleMemorySize"]),
        busyRAM = totalRAM - Convert.ToUInt64(RAM["FreePhysicalMemory"]);

    MessageBox.Show((busyRAM * 100 / totalRAM).ToString());
}

Лайкнул Илья
Илья

Привет, у меня все эти .СкопированоChecked стоят ))
Я хотел как в Win 10 Tweakere сделать при достижении 30, 40 процентов занятой оперативной памяти.

Ты на правильном пути, однако не понятно, в чем именно проблема. Твоя проверка на СкопированоbusyRam * 100 / totalRam >= 20 работает замечательно...
Самое очевидное здесь искать проблемную строчку дебагом или например, MessageBox(ом)

Лайкнул Илья
Илья

Скажи пожалуйста ты в проекте попробовал? и как ты пробовал?

Вот так

Лайкнул Илья
Илья
static int MemoryEmptyWorkingSets = 2;
 static extern uint NtSetSystemInformation(int InfoClass, ref int Info, int Length);
public static int EmptyWorkingSet()
{
    using (var current = WindowsIdentity.GetCurrent(TokenAccessLevels.Query | TokenAccessLevels.AdjustPrivileges))
    {
        TokPriv1Luid newst; newst.Count = 1; newst.Luid = 0L; newst.Attr = 2;
        if (!LookupPrivilegeValue(null, "SeProfileSingleProcessPrivilege", ref newst.Luid)) { return 1; }
        if (!AdjustTokenPrivileges(current.Token, false, ref newst, 0, IntPtr.Zero, IntPtr.Zero)) { return 2; }
        NtSetSystemInformation(80, ref MemoryEmptyWorkingSets, Marshal.SizeOf(2));
    }
    return 0;
}

Скажи ты мог бы попробовать с этим методом

if (busyRam / totalRam * 100 >= 30)
{
    MemoryClean.EmptyWorkingSet();
}

 

По Моему Ты что-то не докинул *скрин*

Сори 

public static int SystemInfoLength;
public static GCHandle gcHandle;
[DllImport("advapi32", SetLastError = true)]
static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);
[DllImport("advapi32", SetLastError = true)]
static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);
[DllImport("ntdll", SetLastError = true)]
static extern uint NtSetSystemInformation(int InfoClass, ref int Info, int Length);

первые две вроде не нужны

Это какая-то библиотека? *скрин*

Страница 1 из 2►