[SIZE=2][FONT=Courier New][System.Runtime.InteropServices.[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]StructLayout[/COLOR][/SIZE][SIZE=2](System.Runtime.InteropServices.[/SIZE][SIZE=2][COLOR=#008080]LayoutKind[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].Sequential)][/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]struct [/COLOR][/SIZE][SIZE=2][COLOR=#008080]WINAPI_MEMORYSTATUS
[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]{[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#008080]UInt32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] dwAvailPageFile;[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#008080]UInt32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] dwAvailPhys;[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#008080]UInt32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] dwAvailVirtual;[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#008080]UInt32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] dwLength;[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#008080]UInt32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] dwMemoryLoad;[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#008080]UInt32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] dwTotalPageFile;[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#008080]UInt32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] dwTotalPhys;[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]public [/COLOR][/SIZE][SIZE=2][COLOR=#008080]UInt32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] dwTotalVirtual;[/FONT]
[FONT=Courier New]}[/FONT]
[/SIZE]
определение в С# операций с windows
1. закончился тонер в лазерном принтере
2. зажована бумага
3. оперативная память загружена более 80%
Какие классы и функции используются для этого?
Цитата: Magam
Как в С# определить :
1. закончился тонер в лазерном принтере
2. зажована бумага
3. оперативная память загружена более 80%
Какие классы и функции используются для этого?
1. закончился тонер в лазерном принтере
2. зажована бумага
3. оперативная память загружена более 80%
Какие классы и функции используются для этого?
Первые два - только прямая с работа с драйвером, это очень сложно в случае с C#. А последнее можно через WinAPI. Сначала создаём структуру MEMORYSTATUS:
Код:
Далее создаём managed-обёртку для вызова WinAPI функции для получения состояния памяти:
Код:
[SIZE=2][FONT=Courier New][System.Runtime.InteropServices.[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]DllImport[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"Kernel32.dll"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New], [/FONT]
[FONT=Courier New]CharSet = System.Runtime.InteropServices.[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]CharSet[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].Auto, [/FONT]
[FONT=Courier New]SetLastError = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New],[/FONT]
[FONT=Courier New]CallingConvention = System.Runtime.InteropServices.[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]CallingConvention[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].Winapi)] [/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]extern [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void [/COLOR][/SIZE][SIZE=2]GlobalMemoryStatus([/SIZE][SIZE=2][COLOR=#0000ff]ref [/COLOR][/SIZE][SIZE=2][COLOR=#008080]WINAPI_MEMORYSTATUS[/COLOR][/SIZE][SIZE=2] lpBuffer);
[/SIZE][/FONT]
[FONT=Courier New]CharSet = System.Runtime.InteropServices.[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]CharSet[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].Auto, [/FONT]
[FONT=Courier New]SetLastError = [/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]true[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New],[/FONT]
[FONT=Courier New]CallingConvention = System.Runtime.InteropServices.[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]CallingConvention[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].Winapi)] [/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]extern [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]void [/COLOR][/SIZE][SIZE=2]GlobalMemoryStatus([/SIZE][SIZE=2][COLOR=#0000ff]ref [/COLOR][/SIZE][SIZE=2][COLOR=#008080]WINAPI_MEMORYSTATUS[/COLOR][/SIZE][SIZE=2] lpBuffer);
[/SIZE][/FONT]
Теперь можно вызвать функцию:
Код:
[SIZE=2][COLOR=#008080][FONT=Courier New]WINAPI_MEMORYSTATUS[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2] mem = [/SIZE][SIZE=2][COLOR=#0000ff]default[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]WINAPI_MEMORYSTATUS[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]);[/FONT]
[FONT=Courier New]GlobalMemoryStatus([/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]ref[/COLOR][/SIZE][SIZE=2] mem);
[/SIZE][/FONT]
[FONT=Courier New]GlobalMemoryStatus([/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]ref[/COLOR][/SIZE][SIZE=2] mem);
[/SIZE][/FONT]
Хорошо, спасибо
Если не ошибаюсь, то это можно реализовать через