常用Win32Api调用............

win32api 在使用起来威力很大,可惜用起来不太方便,

我封装几个,请各位测试一下:是否有误

using System;
using System.Runtime.InteropServices ;
using HANDLE = System.IntPtr;
using HWND = System.IntPtr;
using HFILE=System.IntPtr;
using DWORD=System.UInt32
using LPCTSTR=System.String ;
using LPTSTR=System.String ;
using LPSTR=System.String ;
using BOOL=System.Int32 ;
using UINT=System.UInt32 ;

namespace WinApi
{
 /// <summary>
 /// Win32Api文件处理
 /// </summary>
 public sealed class Win32Api_File
 {
  public const  uint MAX_PATH=256;
  public const  int TRUE=1;
  public const  int FALSE=0;
  #region 指定文件的标志
 public const int   FILE_FLAG_WRITE_THROUGH =  unchecked((int)0x80000000);
 public const int   FILE_FLAG_NO_BUFFERING  = unchecked((int)0x20000000);
 public const int   FILE_FLAG_RANDOM_ACCESS   =unchecked((int)0x10000000);
 public const int   FILE_FLAG_SEQUENTIAL_SCAN =unchecked((int)0x08000000);
 public const int   FILE_FLAG_DELETE_ON_CLOSE =unchecked((int) 0x04000000);
 public const int   FILE_FLAG_BACKUP_SEMANTICS   = unchecked((int) 0x02000000);
 public const int   FILE_FLAG_POSIX_SEMANTICS    = unchecked((int) 0x01000000);
 public const int   FILE_FLAG_OPEN_REPARSE_POINT = unchecked((int) 0x00200000);
 public const int   FILE_FLAG_OPEN_NO_RECALL     = unchecked((int) 0x00100000);
 public const int   FILE_FLAG_FIRST_PIPE_INSTANCE= unchecked((int) 0x00080000);
 public const int   FILE_FLAG_OVERLAPPED =unchecked((int) 0x40000000);//通过结构变量来保存和设置文件
  #endregion
  #region 指定文件的属性
 public const int   FILE_ATTRIBUTE_ARCHIVE =unchecked((int) 0x20);//归档
 public const int   FILE_ATTRIBUTE_COMPRESSED =unchecked((int) 0x800);//
 public const int   FILE_ATTRIBUTE_DIRECTORY = unchecked((int)0x10);//目录
 public const int   FILE_ATTRIBUTE_HIDDEN = unchecked((int)0x2);//隐藏
 public const int   FILE_ATTRIBUTE_NORMAL = unchecked((int)0x80);//正常
 public const int   FILE_ATTRIBUTE_READONLY =unchecked((int) 0x1);//只读
 public const int   FILE_ATTRIBUTE_SYSTEM = unchecked((int)0x4);//系统文件
 public const int   FILE_ATTRIBUTE_TEMPORARY = unchecked((int)0x100);//临时存储文件

  #endregion
 public const int   INVALID_HANDLE_VALUE =-1;
 public const int   INVALID_FILE_SIZE=unchecked((int)0xFFFFFFFF);
 public const int   INVALID_SET_FILE_POINTER =-1;
 public const int   INVALID_FILE_ATTRIBUTES =-1;
 public const int   File_Begin   =     0;
 public const int   File_Current  =       1;
 public const int   File_End    =       2;
  #region  指定文件的创建方式
 public const int   CREATE_NEW      =    1;
 public const int   CREATE_ALWAYS   =    2;
 public const int   OPEN_EXISTING   =    3;
 public const int   OPEN_ALWAYS     =    4;
 public const int   TRUNCATE_EXISTING =  5;
  #endregion
  #region  指定文件的存取模式
 public const int   GENERIC=0;
 public const int   GENERIC_READ=1;
 public const int   GENERIC_WRITE=2;
  #endregion
  #region  指定文件的共享模式
  public const int   File_Share_No=0;
  public const int   File_Share_Delete=0x3;
  public const int   File_Share_Read=0x1;
  public const int   File_Share_Write=0x2;
  #endregion
  public struct OVERLAPPED
  {
   public int Internal;
   public int InternalHigh;
   public int offset;
   public int OffsetHigh;
   public HANDLE hEvent;
  }

  /// <summary>
  /// 指定文件的安全属性
  /// </summary>
        public struct SECURITY_ATTRIBUTES
         {
   public int nLength;
   public int lpSecurityDescriptor;
   public int bInheritHandle;
          }
  /// <summary>
  /// Create A New File
  /// </summary>
  /// <param name="lpFileName">FileName :end with NULL</param>
  /// <param name="dwDesiredAccess">Access Mode</param>
  /// <param name="dwShareMode">Share  Mode</param>
  /// <param name="lpSec">文件安全属性</param>
  /// <param name="dwCreationDisposition">Creat Mode</param>
  /// <param name="dwFlagsAndAttributes">其值为=Flags|Attributes</param>
  /// <param name="hTemplateFile">临时文件句柄可以为NULL</param>
  /// <returns></returns>
 [DllImport("Kernel32.dll") ]
     public extern static  System.IntPtr CreateFile(
   string lpFileName,
   System.UInt32 dwDesiredAccess,
   System.UInt32 dwShareMode,
   ref SECURITY_ATTRIBUTES lpSec,
   System.UInt32 dwCreationDisposition,
   System.UInt32 dwFlagsAndAttributes,
   System.IntPtr hTemplateFile
   );
  /// <summary>
  /// 创建一个临时文件
  /// </summary>
  /// <param name="lpPathName">以NULL结尾的目录路径名</param>
  /// <param name="lpPrefixString">临时文件名的前缀字符串(以NULL结尾)</param>
  /// <param name="uUnique">为0时将返回一个唯一的整数</param>
  /// <param name="lpTempFileName">接受临时文件名的缓冲区</param>
  /// <returns></returns>
  [DllImport("Kernel32.dll") ]
   public extern static   uint   GetTempFileName(
        string lpPathName,
    
        string  lpPrefixString ,
        uint   uUnique,
        ref  string  lpTempFileName);
  /// <summary>
  /// 为一个已打开的文件设置文件指针
  /// </summary>
  /// <param name="hFile">已经打开的文件名柄</param>
  /// <param name="lDistanceToMove">文件指针要移动的byte数</param>
  /// <param name="lpDistanceToMoveHigh">。。</param>
  /// <param name="dwMoveMethod">移动方式:File_Begin,File_End,File_Current</param>
  /// <returns></returns>
[DllImport("Kernel32.dll") ]
  public extern  static  uint SetFilePointer(
   HANDLE hFile,
   int    lDistanceToMove,//number of bytes to move file pointer
   ref int lpDistanceToMoveHigh, //point to high_order dword of distance to move
   int dwMoveMethod//how to move
   );

  /// <summary>
  /// Write Data to  File
  /// </summary>
  /// <param name="hFile">OpenFile返回 的文件句柄</param>
  /// <param name="lpBuffer">要写入文件的数据地址</param>
  /// <param name="nNumberOfBytesToWrite">写入多少字节</param>
  /// <param name="lpNumberOfBytesWritten">返回本次调用成功写入的字节数</param>
  /// <param name="lpOverlapped"></param>
  /// <returns></returns>
            [DllImport("Kernel32.dll") ]
   public static extern int WriteFile(HANDLE hFile,
    IntPtr lpBuffer,
    int nNumberOfBytesToWrite,
    ref int lpNumberOfBytesWritten,
    ref OVERLAPPED lpOverlapped);
  /// <summary>
  /// 文件异步读写的回调方法 dwErrorCode==0,则I/O顺利完成
  /// </summary>
         public delegate  void   FileIOCompletionRoutine(uint dwErrorCode,
      uint  lwNumberOfBytesTrancsfer,
      ref OVERLAPPED lpOverlapped);
   [DllImport("kernel32")]
  public static extern int WriteFileEx(HANDLE hFile,
    IntPtr lpBuffer,
    int nNumberOfBytesToWrite,
    ref OVERLAPPED lpOverlapped,
    FileIOCompletionRoutine lpCompletionRoutine);
  [DllImport("kernel32")]
  public static extern int ReadFile(HANDLE hFile,
   IntPtr lpBuffer,
   int nNumberOfBytesToRead,
   ref int lpNumberOfBytesRead,
   ref OVERLAPPED lpOverlapped);
  [DllImport("kernel32")]
  public static extern int ReadFileEx(HANDLE hFile,
   IntPtr lpBuffer,
   int nNumberOfBytesToRead,
   ref OVERLAPPED lpOverlapped,
   FileIOCompletionRoutine lpCompletionRoutine);
  [DllImport("kernel32")]
  public static extern int CopyFile(string lpExistingFileName, string lpNewFileName, int bFailIfExists);
  public delegate uint  CopyProgressRoutine(long totalFileSize,
   long  totalBytesTransfer,
   long  streamSize,
   long  streamBytesTransfered,
   uint  dwStreamNumber,
   uint  dwCallbackReason,
   HANDLE hSourceFile,
   HANDLE hDestinationFile,
   System.IntPtr lpData);
  [DllImport("kernel32")]
  public static extern int  CopyFileEx(string lpExistingFileName,
   string  lpNewFileName,
   CopyProgressRoutine lpPrgRoutine,
   System.IntPtr lpData,
   ref int pbCancel,
   uint  dwCopyFlag);
  [DllImport("kernel32")]
  public static extern int MoveFile(string lpExistingFileName, string lpNewFileName);
  [DllImport("kernel32")]
  public static extern int MoveFileEx(string lpExistingFileName, string lpNewFileName, uint dwFlags);
  [DllImport("kernel32")] public static extern int DeleteFile(string lpFileName);
  [DllImport("kernel32")] public static extern int CloseHandle(HANDLE hFile);
  [DllImport("kernel32")] public static extern uint GetFileSize(HANDLE hFile, ref uint lpFileSizeHigh);
  public const int FILE_TYPE_CHAR = 0x2;
  public const int FILE_TYPE_DISK = 0x1;
  public const int FILE_TYPE_PIPE = 0x3;
  public const int FILE_TYPE_REMOTE = 0x8000;
  public const int FILE_TYPE_UNKNOWN = 0x0;
  /// <summary>
  /// 得到文件类型
  /// </summary>
  /// <param name="hFile"></param>
  /// <returns>返回以下之一: FILE_TYPE_CHAR = 0x2;
     ///   FILE_TYPE_DISK = 0x1;
  ///   FILE_TYPE_PIPE = 0x3;
     ///     FILE_TYPE_REMOTE = 0x8000;
     ///    FILE_TYPE_UNKNOWN = 0x0;</returns>
  [DllImport("kernel32")] public static extern uint GetFileType(HANDLE hFile);
  public struct FILETIME
  {
   uint dwLowDateTime;
   uint  dwHighDateTime;
  }
  [DllImport("kernel32")] public static extern int SetFileTime(HANDLE hFile, ref FILETIME lpCreationTime, ref FILETIME lpLastAccessTime, ref FILETIME lpLastWriteTime);
  [DllImport("kernel32")] public static extern int GetFileTime(HANDLE hFile, ref FILETIME lpCreationTime, ref FILETIME lpLastAccessTime, ref FILETIME lpLastWriteTime);
  #region 文件格式执行类型
  public const int SCROLLLOCK_ON = 0x40;
  public const int SCS_32BIT_BINARY = 0;
  public const int SCS_DOS_BINARY = 1;
  public const int SCS_OS216_BINARY = 5;
  public const int SCS_PIF_BINARY = 3;
  public const int SCS_POSIX_BINARY = 4;
  public const int SCS_WOW_BINARY = 2;
  #endregion
  [DllImport("kernel32")] public static extern int GetBinaryType(string lpAppName,
   ref uint  lpBinaryType);
  [DllImport("kernel32")]
  public static extern  DWORD GetFullPathName(
     LPCSTR lpFileName,
        DWORD nBufferLength,
        out  LPSTR lpBuffer,
        out  LPSTR lpFilePart);
  [DllImport("kernel32")] public static extern int GetShortPathName(string lpszLongPath, string lpszShortPath, uint cchBuffer);
  public struct BY_HANDLE_FILE_INFORMATION
  {
  uint  dwFileAttributes;
  FILETIME ftCreationTime;
  FILETIME ftLastAccessTime;
  FILETIME ftLastWriteTime;
  uint  dwVolumeSerialNumber;
  uint  nFileSizeHigh;
  uint  nFileSizeLow;
  uint  nNumberOfLinks;
  uint  nFileIndexHigh;
  uint  nFileIndexLow;
 }
  [DllImport("kernel32")]
  public static extern  BOOL  GetFileInformationByHandle(
    HANDLE hFile,
    out BY_HANDLE_FILE_INFORMATION lpFileInformation );
  [DllImport("kernel32")]
  public static  extern BOOL  SetEndOfFile(HANDLE file);
  [DllImport("kernel32")]
  public static  extern BOOL  SetFileAttribute(
   LPCTSTR lpFileName,
   DWORD   dwFileAttribute);
  /// <summary>
  /// 返回文件的属性
  /// </summary>
  /// <param name="lpFileName"></param>
  /// <returns>如果返回0xFFFFFFFF返回失败</returns>
  [DllImport("kernel32")]
  public static  extern  DWORD  GetFileAttribute(
   LPCTSTR lpFileName);
  [DllImport("kernel32")]
  public static  extern  BOOL CreateDirectoryA(
     LPCSTR lpPathName,
            ref SECURITY_ATTRIBUTES lpSecurityAttributes);
  [DllImport("kernel32")]
  public static  extern  BOOL CreateDirectoryA(
   LPCSTR lpTemplateName,
   LPCSTR lpNewDirectory,
   ref SECURITY_ATTRIBUTES lpSecurityAttributes
   );
  [DllImport("kernel32")]
  public static  extern  BOOL RemoveDirectory( LPCSTR lpPathName);
  [DllImport("kernel32")]
  public static  extern  UINT GetSystemDirectory(out LPTSTR lpBuffer,  UINT uSize);
  [DllImport("kernel32")]
  public static  extern  DWORD GetTempPath( DWORD nBufferLength,out LPSTR lpBuffer );
  [DllImport("kernel32")]
  public static  extern  UINT GetWindowsDirectory(out  LPSTR lpBuffer, UINT uSize);
  [DllImport("kernel32")]
  public static extern     BOOL   SetCurrentDirectory(LPCTSTR lpPathName);
  [DllImport("kernel32")]
  public static extern DWORD  GetCurrentDirectory(int nBufferLength, LPTSTR lpBuffer);
  public struct WIN32_FIND_DATA
  {
   public int dwFileAttributes;
   public FILETIME ftCreationTime;
   public FILETIME ftLastAccessTime;
   public FILETIME ftLastWriteTime;
   public int nFileSizeHigh;
   public int nFileSizeLow;
   public int dwReserved0;
   public int dwReserved1;
   [MarshalAs(UnmanagedType.ByValTStr, SizeConst=Win32Api_File.MAX_PATH )]
   public string cFileName;
   [MarshalAs(UnmanagedType.ByValTStr, SizeConst=14)]
   public string cAlternate;
  }
  [DllImport("kernel32")]
  public static extern  HANDLE FindFirstFile(LPCTSTR lpFileName,ref WIN32_FIND_DATA lpFindFileData);
  [DllImport("kernel32")]
  public static extern  BOOL  FindNextFile(HANDLE hFindFile,ref WIN32_FIND_DATA lpFindFileData);
  [DllImport("kernel32")]
  public static extern DWORD SearchPath(LPCTSTR lpPath,
      LPCTSTR lpFileName,
      LPCTSTR lpExtension,
      DWORD nBufferLength,
      LPTSTR  lpBuffer,
      ref LPTSTR  lpFilePart);
  [DllImport("kernel32")]
  public static extern  BOOL  FindClose(HANDLE hFindFile);
  [DllImport("kernel32")]
  public static extern BOOL  GetDiskFreeSpace(
     LPCTSTR lpRootPathName,
     ref DWORD lpSectorsPerCluster,
     ref DWORD lpbytesPerSector,
     ref DWORD lpNumberOfFreeClusters,
     ref DWORD lpTotalNumberOfCluster);
  [DllImport("kernel32")]
  public static extern BOOL  GetDiskFreeSpaceEx(
     LPCTSTR lpDirectoryName,
     ref long  lpFreeBytesAalToCaller,
     ref long  lpTotalNumberOfBytes,
     ref long  lpTotalNumberOfFreeBytes);
public const  int DRIVE_UNKNOWN =    0;
public const  int DRIVE_NO_ROOT_DIR= 1;
public const  int DRIVE_REMOVABLE =  2;
public const  int DRIVE_FIXED   =    3;
public const  int DRIVE_REMOTE   =   4;
public const  int DRIVE_CDROM     =  5;
public const  int DRIVE_RAMDISK   =  6;
  /// <summary>
  /// 得到磁盘类型
  /// </summary>
  /// <param name="lpRootPathName">可选参数</param>
  /// <returns>  0。。。6</returns>
  [DllImport("kernel32")]
  public static extern  UINT GetDriveType(
     LPCSTR  lpRootPathName);
 


 
 
 


 

  

  

 

 

 
                                                   
  private Win32Api_File()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }
 }
}


 

转载于:https://www.cnblogs.com/dhz123/archive/2004/07/15/2194415.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为Microsoft 32位平台的应用程序编程接口, Win32 API是从事Windows应用程序开发所必备的。 首先对Win32 API函数做完整的概述;然后收录五大类函数: 窗口管理、图形设备接口、系统服务、国际特性以及网络服务; 在附录部分,讲解如何在Visual Basic和Delphi中对其调用。 本书是从事Windows应用程序开发的软件工程师的必备参考手册。 控件与消息函数 共91个函数 硬件与系统函数 共98个函数 设备场景函数 共73个函数 绘图函数 共105个函数 位图、图标和光栅运算函数 共39个函数 菜单函数 共37个函数 文本和字体函数 共41个函数 打印函数 共66个函数 文件处理函数 共118个函数 进程和线程函数 共40个函数 Windows消息函数 共11个函数 网络函数 共14个函数 目 录 第一章 Win32 API概论…………………………………………………………………………1 1.1 为什么使用Win32 API …………………………………………………………………1 1.2 Win32 API简介 …………………………………………………………………………1 1.3 综述………………………………………………………………………………………11 第二章 窗口管理函数(Windows Control Function) ……………………………………13 2.1 易用特性函数(Accessibility Features)…………………………………………13 2.2 按钮函数(Button)……………………………………………………………………20 2.3 插入标记(^)函数(Caret)…………………………………………………………21 2.4 组合框函数(Combo box) ……………………………………………………………24 2.5 通用对话框函数(Common Dialog Box) ……………………………………………25 2.6 标函数(Cursor)………………………………………………………………………36 2.7 对话框函数(Dialog Box)……………………………………………………………40 2.8 编辑控制函数(Edit Control)………………………………………………………54 2.9 图标函数(Icon)………………………………………………………………………54 2.10 键盘加速器函数(Keyboard Accelerator)……………………………………… 61 2.11 键盘输入函数(Keyboard InPut) …………………………………………………63 2.12 列表框函数(List box) ……………………………………………………………75 2.13 菜单函数(Menu) ……………………………………………………………………76 2.14 消息和消息队列函数(Message and Message Queue)……………………………90 2.15 鼠标输入函数(Mouse Input) ……………………………………………………100 2.16 多文档接口函数(Multiple Document Interface) ……………………………103 2.17 资源函数(Resource)………………………………………………………………105 2.18 滚动条函数(Scroll Bar)…………………………………………………………113 2.19 窗口函数(Window)…………………………………………………………………119 2.20 窗口类函数(Window Class)………………………………………………………144 2.21 窗口过程函数(Window Procedure)………………………………………………150 2.22 窗口属性函数(Window Property) ………………………………………………152 第三章 图形设备接口函数(Graphic Device Interface Function) …………………155 3.1 位图函数(Bitmap) …………………………………………………………………155 3.2 笔刷函数(Brush)……………………………………………………………………171 3.3 剪切函数(Clipping) ………………………………………………………………176 3.4 颜色函数(Color)……………………………………………………………………179 3.5 坐标空间与变换函数(Coordinate Space Transformation)……………………186 3.6 设备环境函数(Device Context) …………………………………………………195 3.7 填充形态函数(Filled shape) ……………………………………………………211 3.8 字体和正文函数(Font and Text)…………………………………………………215 3.9 ICM 2.0函数 …………………………………………………………………………238 3.10 线段和曲线函数(Line and Curve)………………………………………………295 3.11 图元文件函数(Metafile)…………………………………………………………300 3.12 多显示器函数(Multiple Display Monitors) …………………………………311 3.13 绘图函数和画图函数(Painting and Drawing)…………………………………313 3.14 路径函数(Path)……………………………………………………………………328 3.15 画笔函数(Pen) ……………………………………………………………………332 3.16 打印及打印假脱机程序函数(Printing and Print Spooler)…………………334 3.17 矩形函数(Rectangle) ……………………………………………………………371 3.18 区域函数(Region)…………………………………………………………………374 第四章 系统服务函数(System Service Function) ……………………………………383 4.1 访问控制函数(Access Control) …………………………………………………383 4.2 原子函数(Atom) ……………………………………………………………………406 4.3 客户/服务器访问控制函数(Client/Server Access Control) ………………409 4.4 剪贴板函数(Clipboard)……………………………………………………………431 4.5 通信函数(Communication)…………………………………………………………436 4.6 控制台函数(Console)………………………………………………………………444 4.7 数据解压库函数(Data Decompression Library) ………………………………463 4.8 调试函数(Debugging)………………………………………………………………466 4.9 设备输入输出函数(Device Input and Output)…………………………………472 4.10 动态数据交换函数(Dynamic Data Exchange) …………………………………474 4.11 动态数据交换管理函数(Dynamic Data Exchange Management)………………476 4.12 动态链接库函数(Dynamic-Link Library)………………………………………489 4.13 错误函数(Error) …………………………………………………………………496 4.14 事件日志函数(Event Logging) …………………………………………………499 4.15 文件函数(File)……………………………………………………………………503 4.16 文件安装库函数(File Installation Library) ………………………………542 4.17 文件映射函数(File Mapping)……………………………………………………546 4.18 文件系统函数 File System)………………………………………………………551 4.19 句柄和对象函数(Handle and Object)………………………………………………556 4.20 挂钩函数(Hook)………………………………………………………………………560 4.21 ImageHlp函数…………………………………………………………………………572 4.22 大整数操作函数(Iarge Integer Operations)……………………………………594 4.23 低层访问控制函数(Low-Level Access Control)………………………………596 4.24 LSAPI函数 …………………………………………………………………………617 4.25 邮槽函数(Mailslot)………………………………………………………………622 4.26 内存管理函数(Memory Management) ……………………………………………623 4.27 管道函数(Pipe) …………………………………………………………………655 4.28 电源管理函数(Power Management) …………………………………………… 663 4.29 进程和线程函数(Process and Thread)…………………………………………666 4.30 注册表函数(Registry)……………………………………………………………700 4.31 字符串操作函数(String Manipulation)……………………………………… 724 4.32 结构化异常处理函数(Structured Exception Handling) ……………………742 4.33 同步函数(Synchronization) ……………………………………………………745 4.34 系统信息函数(System Information)……………………………………………766 4.35 系统消息函数(System Message)…………………………………………………780 4.36 系统关机函数(System Shutdown) ………………………………………………781 4.37 磁带备份函数(Tape Backup) ……………………………………………………783 4.38 时间函数(Time)……………………………………………………………………789 4.39 计时器函数(Timer) ………………………………………………………………795 4.40 工具帮助函数(Tool Help) ………………………………………………………796 4.41 窗口站和桌面函数(Window Station and Desktop)……………………………799 4.42 Windows NT 4.0访问控制函数(Window NT 4.0 Access-Control)……………808 4.43 WinTrust函数(WinTrust)…………………………………………………………814 第五章 国际特性函数(International Peatures Punction)时性…………………………815 5.1 输入方法编辑函数(Input Method Editor)…………………………………………815 5.2 国家语言支持函数(National Language Support)………………………………… 828 5.3 Unicode和字符集函数(Unicode and Character Set)……………………………… 843 第六章 网络服务函数(Networding Service Function)……………………………………849 6.1 数据链路控制函数(DLC)………………………………………………………………849 6.2 网络函数(Net)…………………………………………………………………………849 6.3 NetBIOS函数……………………………………………………………………………896 6.4 网络DDE函数(Networking DDE)……………………………………………………897 6.5 RAS服务器管理函数(RAS Server Administration)………………………………901 6.6 远程访问服务函数(Remote Access Administration)………………………………910 6.7 服务函数(Service)……………………………………………………………………929 6.8 Windows网络函数(Windows Networking)……………………………………………930 附录1 如何在VB中调用DLL API ……………………………………………………………945 1 DLL API的声明……………………………………………………………………………945 2 DLL API调用……………………………………………………………………………947 附录2 在Delphi中直接调用Windows API…………………………………………………953
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值