<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Win32分類與.net分類的對應表

      [摘要]習慣用C#寫東西,但平時又會碰到很多要用win32 API的地方,所以經常要用DllImport,但win32函數的類型寫法是很龐雜的,相信為之困擾的不止我一個,現在我整理一份我個人的理解如下,希望...
      習慣用C#寫東西,但平時又會碰到很多要用win32 API的地方,所以經常要用DllImport,但win32函數的類型寫法是很龐雜的,相信為之困擾的不止我一個,現在我整理一份我個人的理解如下,希望高人不吝賜教。
      我的基本原則有如下幾點:
      1、下面都是針對32位系統的,所以int是32位.long也是32位;
      2、各種句柄類的(H開頭),我認為一律是System.IntPtr,到目前為止沒發現出錯;如果哪位在使用中出錯,請指出;
      3、LP和P,我實在不懂(對C++不太了解),對于LP和P開頭的函數,如果是和STR有關的,一律寫為System.String,像PLCID這樣指向什么東西的,寫為System.UInt32(因為指向另一個地址,那就是指針,指針是32位吧),int之類的數值型,那我就寫為int[],以方便.net程序引用(寫成System.UInt32的話,給API調用應該也不會出錯,但.net程序就不好引用了)



      如有意見,歡迎指教。謝謝





      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






      附:舉一個聲明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


      日韩精品一区二区三区高清