Написать программу для получения сведений о системе, используя функции Win32 API - C#
Формулировка задачи:
В институте такая вот задача далась, помогите её решить пожалуйста:
Написать программу для получения сведений о системе, используя функции
Win32 API типа: GetSystemDirectory (), GetWindowsDirectory (), GetComputerName (),
GetUserName (), GetVersionEx (), GetKeyboardType (). Для вывода результатов
использовать функции wsprintf (), WriteConsole ().
Решение задачи: «Написать программу для получения сведений о системе, используя функции Win32 API»
textual
Листинг программы
- using System;
- using System.Runtime.InteropServices;
- using System.Text;
- namespace n
- {
- struct OSVERSIONINFO
- {
- public uint dwOSVersionInfoSize;
- public uint dwMajorVersion;
- public uint dwMinorVersion;
- public uint dwBuildNumber;
- public uint dwPlatformId;
- [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
- public string szCSDVersion;
- public Int16 wServicePackMajor;
- public Int16 wServicePackMinor;
- public Int16 wSuiteMask;
- public Byte wProductType;
- public Byte wReserved;
- }
- class Program
- {
- [DllImport("kernel32.dll")]
- static extern uint GetSystemDirectory([Out] StringBuilder lpBuffer,
- uint uSize);
- [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
- static extern uint GetWindowsDirectory(StringBuilder lpBuffer,
- uint uSize);
- [DllImport("user32.dll", CallingConvention = CallingConvention.Cdecl)]
- static extern int wsprintf(
- [Out] StringBuilder buffer,
- string format,
- string arg);
- [DllImport("kernel32.dll")]
- static extern bool WriteConsole(IntPtr hConsoleOutput, string lpBuffer,
- uint nNumberOfCharsToWrite, out uint lpNumberOfCharsWritten,
- IntPtr lpReserved);
- [DllImport("kernel32.dll", SetLastError = true)]
- static extern IntPtr GetStdHandle(int nStdHandle);
- [DllImport("Kernel32", CharSet = CharSet.Auto)]
- public static extern bool GetComputerName(StringBuilder buffer, ref uint size);
- [DllImport("advapi32.dll", SetLastError = true)]
- static extern bool GetUserName(StringBuilder sb, ref uint length);
- [DllImport("user32.dll")]
- static extern int GetKeyboardType(int nTypeFlag);
- static uint Write(string s)
- {
- const int STD_OUTPUT_HANDLE = -11;
- IntPtr iStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
- uint cchWritten;
- if (!WriteConsole(iStdOut,
- s,
- (uint)s.Length,
- out cchWritten,
- (IntPtr)0))
- return 0;
- return cchWritten;
- }
- [DllImport("kernel32")]
- static extern bool GetVersionEx(ref OSVERSIONINFO osvi);
- static void Main(string[] args)
- {
- StringBuilder buffer=new StringBuilder(128);
- StringBuilder tmp=new StringBuilder(128);
- GetSystemDirectory(tmp, 128);
- wsprintf(buffer, "System Directory %s\n",tmp.ToString());
- Write(buffer.ToString());
- GetWindowsDirectory(tmp, 128);
- wsprintf(buffer, "Windows Directory %s\n", tmp.ToString());
- Write(buffer.ToString());
- uint l = 128;
- GetComputerName(tmp, ref l);
- wsprintf(buffer, "Computer name %s\n", tmp.ToString());
- Write(buffer.ToString());
- GetUserName(tmp, ref l);
- wsprintf(buffer, "User name %s\n", tmp.ToString());
- Write(buffer.ToString());
- OSVERSIONINFO o=new OSVERSIONINFO();
- GetVersionEx(ref o);
- wsprintf(buffer, "Platform ID %s\n", o.dwPlatformId.ToString());
- Write(buffer.ToString());
- int size= GetKeyboardType(2);
- wsprintf(buffer, "The number of function keys on the keyboard:%s\n", size.ToString());
- Write(buffer.ToString());
- Console.Read();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д