zoukankan      html  css  js  c++  java
  • c#调用系统函数

    C#调用系统API

    [DllImport("动态库名")]
    public static extern
    返回值类型 函数名称 (参数);

    需要使用命名空间 System.Runtime.InteropServices;
    DllImport
    属性用来指定包含外部方法的动态连接库的位置。 "动态库名"指出了库名,static 指明它不属于特定的对象。extern 指明是一个外部的方法。带有DllImport 属性的方法必须带有修饰符extern

    所有的API都在下面3DLL中实现的。
    Kernel
    UserGDI
    1. KERNEL
    它的库名是:KERNEL32.DLL,它是操作系统管理的API
    Process loading.
    加载进程
    Context switching.
    File I/O.
    文件操作
    Memory management.
    内存管理
    比如:GlobalMemoryStatus 函数获得目前系统物理虚拟内存的使用信息。
    2. USER
    WIN32下,它的库名是 USER32.DLL
    它管理全部的用户界面,比如:
    Windows
    窗口
    Menus
    菜单
    Dialog Boxes
    对话框
    Icons etc.,
    图标等
    比如:DrawIcon 画一个图标在指定的设备上。
    3. GDI (Graphical Device Interface)
    这个DLLGDI32.dll,它负责图像的输出,使用GDI绘出窗口,菜单,对话框
    It can create Graphical Output.
    输出图像
    比如:CreateBitmap 函数创建一个指定宽度、高度和颜色格式的位图。

    下面用一个例子来说明如何调用系统API

    通用调用GetLocalTime来取得系统时间的相关信息

    API说明:

    VOID GetLocalTime(

     LPSYSTEMTIME lpSystemTime   // address of system time structure

    );

    LPSYSTEMTIME这个是个结构,定义如下:

    SYSTEMTIME结构struct _SYSTEMTIME { 
        WORD wYear; 
    //
        WORD wMonth; //
        WORD wDayOfWeek;//星期;0为星期日,1为星期一… 
        WORD wDay; //
        WORD wHour; //
        WORD wMinute; //
        WORD wSecond; //
        WORD wMilliseconds;//毫秒 
    } SYSTEMTIME;

     c#调用

    c#调用API函数 class Program
        {
            
    //声明结构体
            [StructLayout(LayoutKind.Sequential)]
            
    public struct SystemTime
            {
                
    public ushort wYear;
                
    public ushort wMonth;
                
    public ushort wDayOfWeek;
                
    public ushort wDay;
                
    public ushort wHour;
                
    public ushort wMinute;
                
    public ushort wSecond;
                
    public ushort wMiliseconds;
            }

            [DllImport(
    "Kernel32.dll")]
            
    public static extern void GetLocalTime(ref SystemTime sysTime);

            
    static void Main(string[] args)
            {
                SystemTime sysTime 
    = new SystemTime();
                GetLocalTime(
    ref sysTime);
                Console.WriteLine(
    "{0}/{1}/{2}", sysTime.wYear,sysTime.wMonth,sysTime.wDay);
                Console.ReadKey();
            }
        }

     

  • 相关阅读:
    单片机的状态机框架编写
    lubuntu18.04.4LTS系统安装及esp8266的环境搭建
    tcp网络驱动芯片w5500使用小记
    virtual box平台下如何实现Windows和ubuntu的文件共享——涉及增强工具+挂载技巧
    ubuntu的版本生命周期
    ubuntu18.10 server折腾小记
    iar、keil(ac5+ac6)编译效果小记
    IAR嵌入式工作台IDE _ (__no_init) 绝对定位
    大战Java虚拟机【2】—— GC策略
    大战Java虚拟机【1】—— 内存
  • 原文地址:https://www.cnblogs.com/ssqjd/p/1386437.html
Copyright © 2011-2022 走看看