Написать программу для получения сведений о системе, используя функции 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();
 
           
        }
 
    }
}

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


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

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

7   голосов , оценка 3.857 из 5
Похожие ответы