C#中调用Windows API时的数据类型对应关系

简介: 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32   BOOLEAN=System.Int32   BYTE=System.UInt16   CHAR=System.

原文 C#中调用Windows API时的数据类型对应关系

BOOL=System.Int32  

BOOLEAN=System.Int32  

BYTE=System.UInt16  

CHAR=System.Int16  

COLORREF=System.UInt32  

DWORD=System.UInt32  

DWORD32=System.UInt32  

DWORD64=System.UInt64  

FLOAT=System.Float  

HACCEL=System.IntPtr  

HANDLE=System.IntPtr  

HBITMAP=System.IntPtr  

HBRUSH=System.IntPtr  

HCONV=System.IntPtr  

HCONVLIST=System.IntPtr  

HCURSOR=System.IntPtr  

HDC=System.IntPtr  

HDDEDATA=System.IntPtr  

HDESK=System.IntPtr  

HDROP=System.IntPtr  

HDWP=System.IntPtr  

HENHMETAFILE=System.IntPtr  

HFILE=System.IntPtr  

HFONT=System.IntPtr  

HGDIOBJ=System.IntPtr  

HGLOBAL=System.IntPtr  

HHOOK=System.IntPtr  

HICON=System.IntPtr  

HIMAGELIST=System.IntPtr  

HIMC=System.IntPtr  

HINSTANCE=System.IntPtr  

HKEY=System.IntPtr  

HLOCAL=System.IntPtr  

HMENU=System.IntPtr  

HMETAFILE=System.IntPtr  

HMODULE=System.IntPtr  

HMONITOR=System.IntPtr  

HPALETTE=System.IntPtr

 HPEN=System.IntPtr  

HRGN=System.IntPtr  

HRSRC=System.IntPtr  

HSZ=System.IntPtr  

HWINSTA=System.IntPtr  

HWND=System.IntPtr  

INT=System.Int32  

INT32=System.Int32  

INT64=System.Int64  

LONG=System.Int32  

LONG32=System.Int32  

LONG64=System.Int64  

LONGLONG=System.Int64  

LPARAM=System.IntPtr

 LPBOOL=System.Int16[]  

LPBYTE=System.UInt16[]  

LPCOLORREF=System.UInt32[]  

LPCSTR=System.String  

LPCTSTR=System.String  

LPCVOID=System.UInt32

 LPCWSTR=System.String  

LPDWORD=System.UInt32[]  

LPHANDLE=System.UInt32  

LPINT=System.Int32[]  

LPLONG=System.Int32[]  

LPSTR=System.String  

LPTSTR=System.String  

LPVOID=System.UInt32  

LPWORD=System.Int32[]  

LPWSTR=System.String  

LRESULT=System.IntPtr  

PBOOL=System.Int16[]  

PBOOLEAN=System.Int16[]  

PBYTE=System.UInt16[]  

PCHAR=System.Char[]  

PCSTR=System.String  

PCTSTR=System.String  

PCWCH=System.UInt32  

PCWSTR=System.UInt32  

PDWORD=System.Int32[]  

PFLOAT=System.Float[]  

PHANDLE=System.UInt32  

PHKEY=System.UInt32  

PINT=System.Int32[]  

PLCID=System.UInt32  

PLONG=System.Int32[]  

PLUID=System.UInt32  

PSHORT=System.Int16[]  

PSTR=System.String  

PTBYTE=System.Char[]  

PTCHAR=System.Char[]  

PTSTR=System.String  

PUCHAR=System.Char[]  

PUINT=System.UInt32[]

 PULONG=System.UInt32[]  

PUSHORT=System.UInt16[]  

PVOID=System.UInt32  

PWCHAR=System.Char[]  

PWORD=System.Int16[]  

PWSTR=System.String  

REGSAM=System.UInt32  

SC_HANDLE=System.IntPtr  

SC_LOCK=System.IntPtr  

SHORT=System.Int16  

SIZE_T=System.UInt32  

SSIZE_=System.UInt32  

TBYTE=System.Char  

TCHAR=System.Char  

UCHAR=System.Byte  

UINT=System.UInt32  

UINT32=System.UInt32  

UINT64=System.UInt64  

ULONG=System.UInt32  

ULONG32=System.UInt32  

ULONG64=System.UInt64  

ULONGLONG=System.UInt64  

USHORT=System.UInt16  

WORD=System.UInt16  

WPARAM=System.IntPtr  

 

C++            C#
=====================================
WORD              ushort
DWORD             uint
UCHAR             int/byte   大部分情况都可以使用int代替,而如果需要严格对齐的话则应该用bytebyte 
UCHAR*            string/IntPtr
unsigned char*    [MarshalAs(UnmanagedType.LPArray)]byte[]/?(Intptr)
char*             string/StringBuilder
LPCTSTR           string
LPTSTR            [MarshalAs(UnmanagedType.LPTStr)] string
long              int
ulong             uint
Handle            IntPtr
HWND              IntPtr
void*             IntPtr
int               int
int*              ref int
*int              IntPtr
unsigned int      uint
COLORREF          uint

 

附:举一个声明API的例子  

[ DllImport( "Kernel32.dll" )]

 public static extern System.UInt32 VirtualAllocEx(

 System.IntPtr hProcess,  

System.UInt32 lpAddress,  

System.UInt32 dwSize,  

System.UInt32 flAllocationType,  

System.UInt32 flProtect

 );

 

转:http://www.cnblogs.com/ausoldier/archive/2007/12/07/986141.html

 

 

Wtypes.h 中的非托管类型 非托管 C 语言类型 托管类名 说明

HANDLE

void*

System.IntPtr

在 32 位 Windows 操作系统上为 32 位,在 64 位 Windows 操作系统上为 64 位。

BYTE

unsigned char

System.Byte

8 位

SHORT

short

System.Int16

16 位

WORD

unsigned short

System.UInt16

16 位

INT

int

System.Int32

32 位

UINT

unsigned int

System.UInt32

32 位

LONG

long

System.Int32

32 位

BOOL

long

System.Int32

32 位

DWORD

unsigned long

System.UInt32

32 位

ULONG

unsigned long

System.UInt32

32 位

CHAR

char

System.Char

用 ANSI 修饰。

LPSTR

char*

System.String 或 System.Text.StringBuilder

用 ANSI 修饰。

LPCSTR

Const char*

System.String 或 System.Text.StringBuilder

用 ANSI 修饰。

LPWSTR

wchar_t*

System.String 或 System.Text.StringBuilder

用 Unicode 修饰。

LPCWSTR

Const wchar_t*

System.String 或 System.Text.StringBuilder

用 Unicode 修饰。

FLOAT

Float

System.Single

32 位

DOUBLE

Double

System.Double

64 位

目录
相关文章
|
8天前
|
自然语言处理 C# Windows
C#开源免费的Windows右键菜单管理工具
C#开源免费的Windows右键菜单管理工具
|
5月前
|
监控 编译器 API
[笔记]Windows核心编程《二十二》注入DLL和拦截API(一)
[笔记]Windows核心编程《二十二》注入DLL和拦截API
120 0
|
2月前
|
API C# C++
微软官方发布的C#开源、免费、实用的Windows工具箱
微软官方发布的C#开源、免费、实用的Windows工具箱
|
3月前
|
JavaScript Linux C#
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
40 0
|
3月前
|
C# Windows
C#安装“Windows 窗体应用(.NET Framework)”
C#安装“Windows 窗体应用(.NET Framework)”
32 0
|
2月前
|
API Python Windows
python3应用windows api对后台程序窗口及桌面截图并保存的方法
python3应用windows api对后台程序窗口及桌面截图并保存的方法
58 1
|
3月前
|
安全 C# Windows
C#开源的一个能利用Windows通知栏背单词的软件 - ToastFish
C#开源的一个能利用Windows通知栏背单词的软件 - ToastFish
|
4月前
|
监控 C# Windows
内网桌面监控软件中的远程控制功能实现(基于C#和Windows Forms)
近年来,随着远程办公的兴起,对内网桌面监控软件的需求逐渐增加。本文将探讨如何通过C#和Windows Forms实现内网桌面监控软件中的远程控制功能,并在结尾部分介绍监控到的数据如何自动提交到网站。
247 0
|
5月前
|
存储 缓存 API
[总结]Windows Crypto API 自动更新根证书问题原因及解决方案
[总结]Windows Crypto API 自动更新根证书问题原因及解决方案
|
5月前
|
API Windows
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例

相关产品

  • 云迁移中心