Написать программу для получения сведений о системе, используя функции Win32 API - C#

Узнай цену своей работы

Формулировка задачи:

В институте такая вот задача далась, помогите её решить пожалуйста: Написать программу для получения сведений о системе, используя функции Win32 API типа: GetSystemDirectory (), GetWindowsDirectory (), GetComputerName (), GetUserName (), GetVersionEx (), GetKeyboardType (). Для вывода результатов использовать функции wsprintf (), WriteConsole ().

Решение задачи: «Написать программу для получения сведений о системе, используя функции Win32 API»

textual
Листинг программы
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using System.Text;
  4.  
  5. namespace n
  6. {
  7.     struct OSVERSIONINFO
  8.     {
  9.         public uint dwOSVersionInfoSize;
  10.         public uint dwMajorVersion;
  11.         public uint dwMinorVersion;
  12.         public uint dwBuildNumber;
  13.         public uint dwPlatformId;
  14.         [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
  15.         public string szCSDVersion;
  16.         public Int16 wServicePackMajor;
  17.         public Int16 wServicePackMinor;
  18.         public Int16 wSuiteMask;
  19.         public Byte wProductType;
  20.         public Byte wReserved;
  21.     }
  22.     class Program
  23.     {
  24.         [DllImport("kernel32.dll")]
  25.         static extern uint GetSystemDirectory([Out] StringBuilder lpBuffer,
  26.            uint uSize);
  27.         [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
  28.         static extern uint GetWindowsDirectory(StringBuilder lpBuffer,
  29.            uint uSize);
  30.         [DllImport("user32.dll", CallingConvention = CallingConvention.Cdecl)]
  31.         static extern int wsprintf(
  32.           [Out] StringBuilder buffer,
  33.           string format,
  34.           string  arg);
  35.  
  36.         [DllImport("kernel32.dll")]
  37.         static extern bool WriteConsole(IntPtr hConsoleOutput, string lpBuffer,
  38.            uint nNumberOfCharsToWrite, out uint lpNumberOfCharsWritten,
  39.            IntPtr lpReserved);
  40.  
  41.         [DllImport("kernel32.dll", SetLastError = true)]
  42.         static extern IntPtr GetStdHandle(int nStdHandle);
  43.  
  44.         [DllImport("Kernel32", CharSet = CharSet.Auto)]
  45.         public static extern bool GetComputerName(StringBuilder buffer, ref uint size);
  46.         [DllImport("advapi32.dll", SetLastError = true)]
  47.         static extern bool GetUserName(StringBuilder sb, ref uint length);
  48.         [DllImport("user32.dll")]
  49.         static extern int GetKeyboardType(int nTypeFlag);
  50.         static uint Write(string s)
  51.         {
  52.             const int STD_OUTPUT_HANDLE = -11;
  53.             IntPtr iStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
  54.             uint cchWritten;
  55.             if (!WriteConsole(iStdOut,
  56.                          s,
  57.                          (uint)s.Length,
  58.                          out cchWritten,
  59.                          (IntPtr)0))
  60.                 return 0;
  61.             return cchWritten;
  62.         }
  63.         [DllImport("kernel32")]
  64.         static extern bool GetVersionEx(ref OSVERSIONINFO osvi);  
  65.         static void Main(string[] args)
  66.         {
  67.             StringBuilder buffer=new StringBuilder(128);
  68.             StringBuilder tmp=new StringBuilder(128);
  69.             GetSystemDirectory(tmp, 128);
  70.             wsprintf(buffer, "System Directory %s\n",tmp.ToString());
  71.             Write(buffer.ToString());
  72.  
  73.             GetWindowsDirectory(tmp, 128);
  74.             wsprintf(buffer, "Windows Directory %s\n", tmp.ToString());
  75.             Write(buffer.ToString());
  76.  
  77.             uint l = 128;
  78.  
  79.             GetComputerName(tmp, ref l);
  80.             wsprintf(buffer, "Computer name %s\n", tmp.ToString());
  81.             Write(buffer.ToString());
  82.  
  83.             GetUserName(tmp, ref l);
  84.             wsprintf(buffer, "User name %s\n", tmp.ToString());
  85.             Write(buffer.ToString());
  86.  
  87.  
  88.             OSVERSIONINFO o=new OSVERSIONINFO();
  89.             GetVersionEx(ref o);
  90.  
  91.             wsprintf(buffer, "Platform ID %s\n", o.dwPlatformId.ToString());
  92.             Write(buffer.ToString());
  93.  
  94.  
  95.  
  96.            int size= GetKeyboardType(2);
  97.             wsprintf(buffer, "The number of function keys on the keyboard:%s\n", size.ToString());
  98.             Write(buffer.ToString());
  99.  
  100.             Console.Read();
  101.  
  102.            
  103.         }
  104.  
  105.     }
  106. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы