版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、在.FramewkSDK文檔中,關(guān)于調(diào)用WindowsAPI的指示比較零散,并且其中稍全面一點(diǎn)的是針對(duì)VisualBasic.講述的。本文將C#中調(diào)用API的要點(diǎn)匯集如下,希望給未在C#中使用過API的朋友一點(diǎn)幫助。另外如果安裝了VisualStudio.的話,在C:ProgramFilesMicrosoftVisualStudio.FramewkSDKSamplesTechnologiesInteropPlatfmInvokeWinA
2、PIsCS目錄下有大量的調(diào)用API的例子。一、★調(diào)用格式usingSystem.Runtime.InteropServices引用此名稱空間,簡化后面的代碼...使用DllImptAttribute特性來引入api函數(shù),注意聲明的是空方法,即方法體為空。[DllImpt(“user32.dll“)]publicstaticexternReturnTypeFunctionName(typearg1typearg2...)調(diào)用時(shí)與調(diào)用其他方
3、法并無區(qū)別可以使用字段進(jìn)一步說明特性,用逗號(hào)隔開,如:[DllImpt(“kernel32“EntryPoint=“GetVersionEx“)]DllImptAttribute特性的公共字段如下:1、CallingConvention指示向非托管實(shí)現(xiàn)傳遞方法參數(shù)時(shí)所用的CallingConvention值。CallingConvention.Cdecl:調(diào)用方清理堆棧。它使您能夠調(diào)用具有varargs的函數(shù)。CallingConven
4、tion.StdCall:被調(diào)用方清理堆棧。它是從托管代碼調(diào)用非托管函數(shù)的默認(rèn)約定。2、Set控制調(diào)用函數(shù)的名稱版本及指示如何向方法封送String參數(shù)。此字段被設(shè)置為Set值之一。如果Set字段設(shè)置為Unicode,則所有字符串參數(shù)在傳遞到非托管實(shí)現(xiàn)之前都轉(zhuǎn)換成Unicode字符。這還導(dǎo)致向DLLEntryPoint的名稱中追加字母“W”。如果此字段設(shè)置為Ansi,則字符串將轉(zhuǎn)換成ANSI字符串,同時(shí)向DLLEntryPoint的名稱
5、中追加字母“A”。4、API中結(jié)構(gòu).中結(jié)構(gòu)或者類。注意這種情況下,要先用StructLayout特性限定聲明結(jié)構(gòu)或類公共語言運(yùn)行庫利用StructLayoutAttribute控制類或結(jié)構(gòu)的數(shù)據(jù)字段在托管內(nèi)存中的物理布局即類或結(jié)構(gòu)需要按某種方式排列。如果要將類傳遞給需要指定布局的非托管代碼,則顯式控制類布局是重要的。它的構(gòu)造函數(shù)中用LayoutKind值初始化StructLayoutAttribute類的新實(shí)例。LayoutKind.S
6、equential用于強(qiáng)制將成員按其出現(xiàn)的順序進(jìn)行順序布局。LayoutKind.Explicit用于控制每個(gè)數(shù)據(jù)成員的精確位置。利用Explicit,每個(gè)成員必須使用FieldOffsetAttribute指示此字段在類型中的位置。如:[StructLayout(LayoutKind.ExplicitSize=16Set=Set.Ansi)]publicclassMySystemTime[FieldOffset(0)]publicus
7、htwYear[FieldOffset(2)]publicushtwMonth[FieldOffset(4)]publicushtwDayOfWeek[FieldOffset(6)]publicushtwDay[FieldOffset(8)]publicushtwHour[FieldOffset(10)]publicushtwMinute[FieldOffset(12)]publicushtwSecond[FieldOffset(14)
8、]publicushtwMilliseconds下面是針對(duì)API中OSVERSIONINFO結(jié)構(gòu),在.中定義對(duì)應(yīng)類或結(jié)構(gòu)的例子:API中定義原結(jié)構(gòu)聲明OSVERSIONINFOASTRUCTdwOSVersionInfoSizeDWDdwMajVersionDWDdwMinVersionDWDdwBuildNumberDWDdwPlatfDWDszCSDVersionBYTE128dup()OSVERSIONINFOAENDSOSVER
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c#中調(diào)用ocx控件
- 用visualc#調(diào)用windowsapi函數(shù)
- 用vb調(diào)用c#寫的net控件
- c#文獻(xiàn)翻譯---c#的優(yōu)點(diǎn)
- 概述c# 語言的基本原理c# 中對(duì)象
- c#中的關(guān)鍵字大全
- c#程序
- [c#畢設(shè)]c#人事管理系統(tǒng)
- c#的命名規(guī)則
- c#類的嵌套
- c#爬蟲算法
- c#圖像處理
- c#快速入門
- c#文本操作
- c#命名規(guī)則
- c#編碼規(guī)范
- c#實(shí)驗(yàn)指導(dǎo)
- c#命名規(guī)范
- c#作業(yè)答案
- c#設(shè)計(jì)模式
評(píng)論
0/150
提交評(píng)論