亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍

C#調用windows api的要點
來源:易賢網 閱讀:1561 次 日期:2015-02-06 15:24:05
溫馨提示:易賢網小編為您整理了“C#調用windows api的要點”,方便廣大網友查閱!

在.Net Framework SDK文檔中,關于調用Windows API的指示比較零散,并且其中稍全面一點的是針對Visual Basic .net講述的。本文將C#中調用API的要點匯集如下,希望給未在C#中使用過API的朋友一點幫助。另外如果安裝了Visual Studio .net的話,在C:/Program Files/Microsoft Visual Studio .NET/FrameworkSDK/Samples/Technologies/Interop/PlatformInvoke/WinAPIs/CS目錄下有大量的調用API的例子。

一、調用格式

using System.Runtime.InteropServices; //引用此名稱空間,簡化后面的代碼

...

//使用DllImportAttribute特性來引入api函數,注意聲明的是空方法,即方法體為空。

[DllImport("user32.dll")]

public static extern ReturnType FunctionName(type arg1,type arg2,...);

//調用時候與調用其他方法并無區別

DllImportAttribute特性的公共字段如下:

1、CallingConvention 指示向非托管實現傳遞方法參數時所用的 CallingConvention 值。

CallingConvention.Cdecl : 調用方清理堆棧。它使您能夠調用具有 varargs 的函數。

CallingConvention.StdCall : 被調用方清理堆棧。它是從托管代碼調用非托管函數的默認約定。

2、CharSet 控制調用函數的名稱版本及指示如何向方法封送 String 參數。

此字段被設置為 CharSet 值之一。如果 CharSet 字段設置為 Unicode,則所有字符串參數在傳遞到非托管實現之前都轉換成 Unicode 字符。這還導致向 DLL EntryPoint 的名稱中追加字母“W”。如果此字段設置為 Ansi,則字符串將轉換成 ANSI 字符串,同時向 DLL EntryPoint 的名稱中追加字母“A”。大多數 Win32 API 使用這種追加“W”或“A”的約定。如果 CharSet 設置為 Auto,則這種轉換就是與平臺有關的(在 Windows NT 上為 Unicode,在 Windows 98 上為 Ansi)。CharSet 的默認值為 Ansi。CharSet 字段也用于確定將從指定的 DLL 導入哪個版本的函數。CharSet.Ansi 和 CharSet.Unicode 的名稱匹配規則大不相同。對于 Ansi 來說,如果將 EntryPoint 設置為“MyMethod”且它存在的話,則返回“MyMethod”。如果 DLL 中沒有“MyMethod”,但存在“MyMethodA”,則返回“MyMethodA”。對于 Unicode 來說則正好相反。如果將 EntryPoint 設置為“MyMethod”且它存在的話,則返回“MyMethodW”。如果 DLL 中不存在“MyMethodW”,但存在“MyMethod”,則返回“MyMethod”。如果使用的是 Auto,則匹配規則與平臺有關(在 Windows NT 上為 Unicode,在 Windows 98 上為 Ansi)。如果 ExactSpelling 設置為 true,則只有當 DLL 中存在“MyMethod”時才返回“MyMethod”。

3、EntryPoint 指示要調用的 DLL 入口點的名稱或序號。

如果你的方法名不想與api函數同名的話,一定要指定此參數,例如:

[DllImport("user32.dll",CharSet="CharSet.Auto",EntryPoint="MessageBox")]

public static extern int MsgBox(IntPtr hWnd,string txt,string caption, int type);

4、ExactSpelling 指示是否應修改非托管 DLL 中的入口點的名稱,以與 CharSet 字段中指定的 CharSet 值相對應。如果為 true,則當 DllImportAttribute.CharSet 字段設置為 CharSet 的 Ansi 值時,向方法名稱中追加字母 A,當 DllImportAttribute.CharSet 字段設置為 CharSet 的 Unicode 值時,向方法的名稱中追加字母 W。此字段的默認值是 false。

5、PreserveSig 指示托管方法簽名不應轉換成返回 HRESULT、并且可能有一個對應于返回值的附加 [out, retval] 參數的非托管簽名。

6、SetLastError 指示被調用方在從屬性化方法返回之前將調用 Win32 API SetLastError。 true 指示調用方將調用 SetLastError,默認為 false。運行時封送拆收器將調用 GetLastError 并緩存返回的值,以防其被其他 API 調用重寫。用戶可通過調用 GetLastWin32Error 來檢索錯誤代碼。

二、參數類型:

1、數值型直接用對應的就可。

2、字符串指針(api) -> string (.net)

3、句柄 (dWord) -> IntPtr

4、結構 -> 結構或者類

這種情況下,要先用StructLayout特性限定聲明,例如:

// declared as class

[ StructLayout( LayoutKind.Sequential )]

public class OSVersionInfo

{

public int OSVersionInfoSize;

public int majorVersion;

public int minorVersion;

public int buildNumber;

public int platformId;

[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )]

public String versionString;

}

// declared as struct

[ StructLayout( LayoutKind.Sequential )]

public struct OSVersionInfo2

{

public int OSVersionInfoSize;

public int majorVersion;

public int minorVersion;

public int buildNumber;

public int platformId;

[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )]

public String versionString;

}

MashalAs特性:用于描述字段、方法或參數的封送處理格式。特性作為參數前綴并指定目標需要的數據類型。例如,以下代碼將兩個參數作為數據類型長指針封送給 Windows API 函數的字符串 (LPStr):

[MarshalAs(UnmanagedType.LPStr)]

String existingfile;

[MarshalAs(UnmanagedType.LPStr)]

String newfile;

注意結構作為參數時候,一般前面要加上ref修飾符,否則會出現錯誤:對象的引用沒有指定對象的實例。

[ DllImport( "kernel32", EntryPoint="GetVersionEx" )]

public static extern bool GetVersionEx2( ref OSVersionInfo2 osvi );

三、如果在調用平臺 invoke 后的任何位置都未引用托管對象,則垃圾回收器可能將完成該托管對象。這將釋放資源并使句柄無效,從而導致平臺 invoke 調用失敗。用 HandleRef 包裝句柄可保證在平臺 invoke 調用完成前,不對托管對象進行垃圾回收。

更多信息請查看IT技術專欄

更多信息請查看數據庫
易賢網手機網站地址:C#調用windows api的要點
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍
亚洲国产欧美日韩| 亚洲一区二区免费看| 久久蜜桃资源一区二区老牛| 悠悠资源网久久精品| 欧美日韩专区| 黄色成人av网站| 国产一区二区中文| 狠狠色狠狠色综合人人| 伊人成年综合电影网| 亚洲国产精品第一区二区| 91久久亚洲| 中文一区二区| 亚洲一区三区视频在线观看| 国产精品一卡| 久久不射中文字幕| 午夜日韩电影| 亚洲人成免费| 免费视频久久| 国产精品久久7| 国产欧美日韩综合一区在线观看 | 国产欧美精品久久| 国产午夜精品一区二区三区欧美 | 91久久午夜| 国产精品主播| 欧美极品一区| 99www免费人成精品| 国产精品亚洲不卡a| 久久久久久9| 欧美二区视频| 99国产精品久久久久老师| 午夜在线一区二区| 亚洲视频综合| 久久综合久久综合这里只有精品| 欧美久久九九| 国产精品日本| 国内精品国语自产拍在线观看| 亚洲成人原创| 欧美激情成人在线| 国产日韩欧美三级| 欧美日韩一区综合| 免播放器亚洲| 亚洲国产美女 | 国产精品综合| 黄色日韩精品| 欧美一区二区在线| 99亚洲伊人久久精品影院红桃| 乱人伦精品视频在线观看| 欧美久久久久| 鲁鲁狠狠狠7777一区二区| 激情文学一区| 国产精品a级| 男女精品视频| 国产一区导航| 亚洲三级影院| 国模精品一区二区三区| 欧美专区一区二区三区| 欧美精品成人| 久久久久欧美| 噜噜噜噜噜久久久久久91| 亚洲人成网站在线观看播放| 欧美精品国产| 欧美日本不卡高清| 国产日韩欧美二区| 在线一区视频| 国产精品亚洲综合久久| 国产欧美一区二区三区另类精品| 国外成人免费视频| 欧美激情亚洲| 欧美日韩一区二区三区在线视频 | 欧美国产另类| 久久人人超碰| 久久亚洲一区二区| 久久久久国内| 欧美精选一区| 久久国产日韩欧美| 久久欧美肥婆一二区| 久久精品系列| 欧美日本一区| 亚洲国产日韩综合一区| 一区二区三区欧美在线| 欧美国产另类| 亚洲亚洲精品三区日韩精品在线视频| 欧美日韩网站| 亚洲国内欧美| 亚洲制服av| 欧美freesex交免费视频| 午夜欧美精品久久久久久久| 欧美日韩一区在线播放 | 久久精品一本| 欧美jjzz| 黄色工厂这里只有精品| 99re热精品| 午夜在线视频一区二区区别| 久久久久国产一区二区| 欧美日韩免费| 亚洲日本黄色| 蜜乳av另类精品一区二区| 麻豆成人在线| 国产精品初高中精品久久 | 久久伊人一区二区| 国内精品视频在线播放 | 日韩一区二区久久| 免费日韩av片| 亚洲午夜精品国产| 99视频一区| 久久精品五月| 亚洲国产日韩在线| 欧美一区二视频在线免费观看| 好吊视频一区二区三区四区 | 欧美日韩国产一区精品一区| 欧美激情日韩| 国产情侣久久| 国内精品视频在线播放| 亚洲第一黄网| 久久久综合网| 日韩一级大片| 欧美三级网页| 欧美亚洲免费高清在线观看| 欧美午夜一区| 久久经典综合| 91久久在线| 欧美日产一区二区三区在线观看| 极品av少妇一区二区| 免费不卡亚洲欧美| 亚洲看片一区| 老司机午夜精品视频在线观看| 亚洲性感美女99在线| 久久亚洲国产精品日日av夜夜| 亚洲精品美女久久7777777| 久久亚洲视频| 性欧美xxxx大乳国产app| 亚洲国产三级| 雨宫琴音一区二区在线| 国产情侣久久| 99精品国产在热久久| 国产精品久久7| 欧美va天堂在线| 久久午夜精品一区二区| 亚洲欧美综合| 在线成人黄色| 欧美日韩1080p| 欧美大片一区| 国产欧美69| 99国产精品久久久久老师| 精品999日本| 一区免费在线| 亚洲黄色一区| 99成人在线| 一区二区三区av| 日韩亚洲国产精品| 国产偷久久久精品专区| 国产欧美日韩综合一区在线播放| 亚洲黄色视屏| 在线亚洲精品| 国产精品一区毛片| 午夜在线视频一区二区区别| 国产精品日韩| 国产伦精品一区二区三区照片91| 国产亚洲亚洲| 久久久久久夜| 欧美日韩另类丝袜其他| 国产精品成人一区二区网站软件| 亚洲人体偷拍| 麻豆av一区二区三区| 欧美一级久久| 欧美久久一级| 亚洲黄色成人久久久| 精品91免费| 正在播放亚洲| 欧美一区二视频在线免费观看| 午夜欧美理论片| 亚洲国产第一| 先锋影音国产一区| 欧美+亚洲+精品+三区| 国产精品vip| 亚洲欧洲精品一区二区| 国产伦精品一区| 欧美精品亚洲| 99精品国产福利在线观看免费| 国产欧美一级| 欧美成人tv| 一区二区高清视频| 欧美区日韩区| 亚洲一区二区三区四区中文| 欧美黄色免费| 国产偷久久久精品专区| 久久综合狠狠| 中文精品在线| 欧美国产综合视频| 妖精视频成人观看www| 久久另类ts人妖一区二区| 国内久久精品| 久久久久久九九九九| 欧美不卡在线| 亚洲欧美久久久久一区二区三区| 欧美激情无毛| 最新日韩在线| 国产精品国产三级欧美二区| 亚洲一区二区三区四区中文| 国内精品久久久久久久影视麻豆| 欧美亚洲免费在线| aa亚洲婷婷| 国语精品中文字幕| 久久九九国产| 国产精品一区二区三区观看| 国产一区日韩欧美| 在线亚洲自拍| 日韩视频二区| 亚洲黄色av| 狠狠色狠狠色综合人人| 欧美高清日韩| 久久综合亚州| 久久久精品性| 久久久久久久尹人综合网亚洲| 在线天堂一区av电影| 亚洲网站啪啪| 国内精品久久国产| 国产精品a久久久久| 午夜久久资源| 欧美午夜电影在线观看| 欧美久色视频| 欧美午夜一区二区福利视频| 欧美在线免费一级片| 久久资源在线| 欧美黄色大片网站| 国产综合18久久久久久| 欧美视频四区| 亚洲高清在线观看一区| 亚洲国产免费看| 伊人婷婷久久| 一区二区三区国产盗摄| 国产精品久久久久久久久久妞妞 | 一区二区三区偷拍| 亚洲三级影院| 一区二区高清| 亚洲一区图片| 午夜国产一区| 亚洲一区二三| 黄色日韩在线| 欧美激情第二页| 国产精品一区亚洲| 在线日韩视频| 午夜视频一区| 久久久久se| 国产精品毛片一区二区三区| 欧美日韩三级电影在线| 午夜在线精品| 国产日韩欧美一区二区三区四区| 欧美日韩高清在线一区| 美日韩精品免费| 香蕉亚洲视频| 国产精品视频久久一区| 日韩午夜免费| 99视频一区| 一区二区精品在线| 亚洲精品美女| 国内一区二区三区| 好看的日韩av电影| 欧美一区二区三区免费看| 亚洲永久在线| 免费亚洲一区二区| 亚洲一区自拍| 免费一区视频| 久久欧美肥婆一二区| 午夜在线精品偷拍| 六月天综合网| 久久综合精品一区| 欧美国产三区| 黄色成人在线网站| 亚洲国产高清一区二区三区| 91久久精品一区二区别| 日韩五码在线| 亚洲欧美日韩精品综合在线观看| 国产精品久久久免费| 国产农村妇女精品一二区| 亚洲在线一区| 欧美91大片| 国精品一区二区| 亚洲第一黄网| 国产亚洲一区在线播放| 亚洲综合精品| 欧美搞黄网站| 亚洲第一伊人| 国产色综合网| 老司机精品导航| 激情综合中文娱乐网| 夜久久久久久| 欧美一区二区三区在线播放| 欧美久久久久久| 亚洲免费大片| 久久久一二三| 亚洲三级视频| 久久一区中文字幕| 亚洲精美视频| 久久中文精品| 亚洲精品1234| 欧美 日韩 国产精品免费观看| 国产一区自拍视频| 国产亚洲午夜| 欧美日韩爆操| 韩国av一区| 久久精品一区| 亚洲国产导航| 欧美jjzz| 国产亚洲欧美一区二区三区| 麻豆91精品| 亚洲精品123区| 蜜桃av一区| 亚洲区一区二区三区| 久久精品人人| 日韩视频二区| 韩国一区二区三区在线观看| 国产精品久久波多野结衣| 欧美日韩在线高清| 亚洲专区免费| 亚洲欧洲精品一区| 欧美午夜电影在线观看| 性久久久久久| 日韩一区二区久久| 亚洲一二区在线| 欧美在线视频二区| 亚洲一区国产| 99精品国产在热久久| 国产精品xxx在线观看www| 麻豆成人av| 日韩亚洲视频| 亚洲国产欧美日韩| 国内外成人免费视频| 老牛嫩草一区二区三区日本| 亚洲一区二区在| 国产日本精品| 亚洲国产一区二区三区在线播 | 久久狠狠婷婷| 亚洲永久字幕| 亚洲视频二区| 一本色道久久综合亚洲精品不| 黑人一区二区| 亚洲小说区图片区| 亚洲午夜黄色| 亚洲激情二区| 亚洲免费黄色| 亚洲精品美女| 国产欧美日韩亚洲| 亚洲一区二区三区精品视频 | 99视频在线精品国自产拍免费观看| 国内一区二区三区| 在线日本成人| 99日韩精品| 夜久久久久久| 午夜宅男久久久| 欧美在线3区| 国产综合欧美在线看| 国产视频精品网| 亚洲视频一区| 最新日韩av| 亚洲欧美日本视频在线观看| 亚洲欧美日本视频在线观看| 美女日韩在线中文字幕| 欧美凹凸一区二区三区视频| 欧美高清日韩| 亚洲电影成人| 国产精品有限公司| 午夜国产精品视频| 亚洲韩日在线| 噜噜噜在线观看免费视频日韩| 久久深夜福利| 伊人久久婷婷| 亚洲自拍另类| 国产精品九九| 国产乱码精品| 合欧美一区二区三区| 在线一区亚洲| 欧美精品日本| 国产日韩欧美二区| 欧美日本三区| 国产日韩欧美一区二区| 午夜精品剧场| 国产欧美激情| 欧美激情第六页| 国产精品日韩久久久| 欧美久久九九| 亚洲在线观看| 在线成人h网| 欧美91大片| 国产精品久久777777毛茸茸| 欧美日韩三区| 免费一级欧美片在线播放| 午夜视频精品| 国产精品二区二区三区| 国产精品xvideos88| 国产精品久久久亚洲一区| 欧美另类视频| 亚洲一区三区电影在线观看| 亚洲特色特黄| 欧美91福利在线观看| 国产一区二区高清| 91久久精品一区二区别| 欧美a级一区| 久久电影一区| 亚洲激情午夜|