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