精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C#調用Windows API函數

開發 后端
本文介紹C#調用Windows API函數,以及介紹Visual C#和其它開發工具一樣也能夠調用動態鏈接庫的API函數。

Api函數是構筑Windws應用程序的基石,每一種Windows應用程序開發工具,它提供的底層函數都間接或直接地C#調用Windows API函數,同時為了實現功能擴展,一般也都提供了C#調用Windows API函數的接口, 也就是說具備調用動態連接庫的能力。Visual C#和其它開發工具一樣也能夠調用動態鏈接庫的API函數。.NET框架本身提供了這樣一種服務,允許受管轄的代碼調用動態鏈接庫中實現的非受管轄函數,包括操作系統提供的Windows API函數。它能夠定位和調用輸出函數,根據需要,組織其各個參數(整型、字符串類型、數組、和結構等等)跨越互操作邊界。

下面以C#為例簡單介紹調用API的基本過程: 
動態鏈接庫函數的聲明 

動態鏈接庫函數使用前必須聲明,相對于VB,C#函數聲明顯得更加羅嗦,前者通過 Api Viewer粘貼以后,可以直接使用,而后者則需要對參數作些額外的變化工作。

動態鏈接庫函數聲明部分一般由下列兩部分組成,一是函數名或索引號,二是動態鏈接庫的文件名。 
譬如,你想調用User32.DLL中的MessageBox函數,我們必須指明函數的名字MessageBoxA或MessageBoxW,以及庫名字 User32.dll,我們知道Win32 API對每一個涉及字符串和字符的函數一般都存在兩個版本,單字節字符的ANSI版本和雙字節字符的UNICODE版本。

下面是一個調用API函數的例子:

  1. [DllImport("KERNEL32.DLL", EntryPoint="MoveFileW"SetLastError=true,    
  2. CharSetCharSet=CharSet.Unicode, ExactSpelling=true,    
  3. CallingConventionCallingConvention=CallingConvention.StdCall)]    
  4. public static extern bool MoveFile(String src, String dst);   

其中入口點EntryPoint標識函數在動態鏈接庫的入口位置,在一個受管轄的工程中,目標函數的原始名字和序號入口點不僅標識一個跨越互操作界限的函數。而且,你還可以把這個入口點映射為一個不同的名字,也就是對函數進行重命名。重命名可以給調用函數帶來種種便利,通過重命名,一方面我們不用為函數的大小寫傷透腦筋,同時它也可以保證與已有的命名規則保持一致,允許帶有不同參數類型的函數共存,更重要的是它簡化了對ANSI和Unicode版本的調用。CharSet用于標識函數調用所采用的是Unicode或是ANSI版本,ExactSpelling=false將告訴編譯器,讓編譯器決定使用 Unicode或者是Ansi版本。其它的參數請參考MSDN在線幫助.

在C#中,你可以在EntryPoint域通過名字和序號聲明一個動態鏈接庫函數,如果在方法定義中使用的函數名與DLL入口點相同,你不需要在EntryPoint域顯示聲明函數。否則,你必須使用下列屬性格式指示一個名字和序號。

[DllImport("dllname", EntryPoint="Functionname")] 
[DllImport("dllname", EntryPoint="#123")] 
值得注意的是,你必須在數字序號前加“#” 
下面是一個用MsgBox替換MessageBox名字的例子:

  1. using System.Runtime.InteropServices;    
  2.  
  3. public class Win32 {    
  4. [DllImport("user32.dll", EntryPoint="MessageBox")]    
  5. public static extern int MsgBox(int hWnd, String text, String caption, uint type);    
  6. }   

許多受管轄的動態鏈接庫函數期望你能夠傳遞一個復雜的參數類型給函數,譬如一個用戶定義的結構類型成員或者受管轄代碼定義的一個類成員,這時你必須提供額外的信息格式化這個類型,以保持參數原有的布局和對齊。

C#提供了一個StructLayoutAttribute類,通過它你可以定義自己的格式化類型,在受管轄代碼中,格式化類型是一個用StructLayoutAttribute說明的結構或類成員,通過它能夠保證其內部成員預期的布局信息。布局的選項共有三種:

布局選項 
描述 
◆LayoutKind.Automatic 
為了提高效率允許運行態對類型成員重新排序。 
注意:永遠不要使用這個選項來調用不受管轄的動態鏈接庫函數。 
◆LayoutKind.Explicit 
對每個域按照FieldOffset屬性對類型成員排序 
◆LayoutKind.Sequential 
對出現在受管轄類型定義地方的不受管轄內存中的類型成員進行排序。 

傳遞結構成員 

下面的例子說明如何在受管轄代碼中定義一個點和矩形類型,并作為一個參數傳遞給User32.dll庫中的PtInRect函數, 
函數的不受管轄原型聲明如下: 
BOOL PtInRect(const RECT *lprc, POINT pt); 
注意你必須通過引用傳遞Rect結構參數,因為函數需要一個Rect的結構指針。

  1. using System.Runtime.InteropServices;    
  2.  
  3. [StructLayout(LayoutKind.Sequential)]    
  4. public struct Point {    
  5. public int x;    
  6. public int y;    
  7. }    
  8.  
  9. [StructLayout(LayoutKind.Explicit]    
  10. public struct Rect {    
  11. [FieldOffset(0)] public int left;    
  12. [FieldOffset(4)] public int top;    
  13. [FieldOffset(8)] public int right;    
  14. [FieldOffset(12)] public int bottom;    
  15. }    
  16.  
  17. class Win32API {    
  18. [DllImport("User32.dll")]    
  19. public static extern Bool PtInRect(ref Rect r, Point p);    
  20. }    
  21. 類似你可以調用GetSystemInfo函數獲得系統信息:    
  22. ? using System.Runtime.InteropServices;    
  23. [StructLayout(LayoutKind.Sequential)]    
  24. public struct SYSTEM_INFO {    
  25. public uint dwOemId;    
  26. public uint dwPageSize;    
  27. public uint lpMinimumApplicationAddress;    
  28. public uint lpMaximumApplicationAddress;    
  29. public uint dwActiveProcessorMask;    
  30. public uint dwNumberOfProcessors;    
  31. public uint dwProcessorType;    
  32. public uint dwAllocationGranularity;    
  33. public uint dwProcessorLevel;    
  34. public uint dwProcessorRevision;    
  35. }    
  36. [DllImport("kernel32")]    
  37. static extern void GetSystemInfo(ref SYSTEM_INFO pSI);    
  38.  
  39. SYSTEM_INFO pSI = new SYSTEM_INFO();    
  40. GetSystemInfo(ref pSI);   

在C#調用Windows API函數時,大部分函數采用指針傳遞參數,對一個結構變量指針,我們除了使用上面的類和結構方法傳遞參數之外,我們有時還可以采用數組傳遞參數。 

【編輯推薦】

  1. 淺談C#中構造函數和成員函數
  2. C#函數的參數返回結構數組
  3. 概述ASP.NET中的NGWS Runtime
  4. C#函數與JavaScript函數
  5. 詳解C# Object.Equals函數
責任編輯:佚名 來源: IT168
相關推薦

2009-07-31 16:12:10

Windows APIC#

2009-08-17 13:18:01

C#調用Windows

2009-08-25 16:16:27

C#調用Windows

2009-08-17 13:49:20

C#中調用Window

2009-08-17 13:26:20

C#調用Windows

2009-08-05 15:10:19

C#調用GoogleE

2009-08-03 13:13:52

C#調用Outlook

2009-08-07 16:10:20

C#調用API

2009-08-07 16:43:44

C#調用Windows

2009-08-03 14:09:15

C#調用API

2009-08-21 17:42:36

C#調用API

2009-08-14 09:15:28

C#調用構造函數

2009-08-07 17:22:36

C#調用dll導出函數

2009-08-25 10:59:00

C#調用函數顯示值

2009-08-20 10:34:46

C#中聲明API函數

2009-07-31 15:47:20

Win32 APIC#

2009-08-05 09:40:02

C#調用DLL函數

2009-08-05 09:30:39

C#調用DLL函數

2009-08-28 15:45:32

C#操作Win32 A

2009-08-11 14:16:00

Winform調用WEC#
點贊
收藏

51CTO技術棧公眾號

亚洲欧美日产图| 亚洲片在线观看| 国产专区在线视频| 免费国产精品视频| 香蕉久久国产| 久久久91精品国产| 老司机午夜免费福利| 伊人久久精品一区二区三区| 中文字幕第一区第二区| 亚洲伊人久久综合| 日韩精品在线观看免费| 99久久久久| 亚洲精品www久久久久久广东| 免费在线观看毛片网站| a毛片在线看免费观看| 97se狠狠狠综合亚洲狠狠| 国产精品欧美日韩久久| 久久精品视频8| 第一sis亚洲原创| 精品日韩欧美在线| 亚洲免费av一区| 日本不卡网站| 亚洲视频1区2区| 欧美日本国产精品| 亚洲男女视频在线观看| 日本欧美一区二区在线观看| 久久久久久久av| 亚洲欧美另类日本| 午夜精品福利影院| 日韩久久久久久| 国产视频1区2区3区| 欲香欲色天天天综合和网| 一区在线观看视频| 日产精品高清视频免费| 日本wwwxxxx| 国产一区二区三区观看| 国产精品久久久久av| 久久草视频在线| 欧美在线视屏| 精品国产一区二区三区久久| 精品人妻无码一区二区三区| 一区二区三区国产好| 欧美日韩亚洲国产综合| 久热免费在线观看| 欧美激情网站| 午夜精品一区二区三区电影天堂| 亚洲区成人777777精品| 欧美日本高清| 亚洲国产高清aⅴ视频| 鲁丝一区二区三区免费| 天天操天天干天天干| 国产成a人亚洲| 国产日韩精品综合网站| 姑娘第5集在线观看免费好剧| 欧美一级二区| 欧美中文字幕在线| 韩国av免费观看| 最新亚洲视频| 韩国视频理论视频久久| 日韩精品视频播放| 亚洲日本视频| 7777kkkk成人观看| 久久一区二区三区视频| 好看的日韩av电影| 国产最新精品视频| 日本网站在线免费观看| 国产欧美日韩亚洲一区二区三区| 91精品国产高清自在线| 国产一级精品视频| 亚洲美女毛片| 国外成人在线视频| 国产欧美一区二区三区在线看蜜臂| 午夜日韩电影| 97色伦亚洲国产| 亚洲久久在线观看| 青椒成人免费视频| 91久久久精品| 亚洲av永久无码国产精品久久 | 精品自在线视频| 青娱乐在线视频免费观看| 精品96久久久久久中文字幕无| 久久久日本电影| 久久久久久久久久久久久av| 三级影片在线观看欧美日韩一区二区| 国产精品第3页| 91亚洲欧美激情| 国产成人亚洲综合色影视| 国产精品一级久久久| 亚洲欧洲精品视频| 中文字幕欧美激情| 喜爱夜蒲2在线| 日本在线播放一二三区| 在线免费不卡视频| 中文字幕第10页| 精品一区二区男人吃奶| 国产午夜精品一区二区三区 | 亚洲啪啪综合av一区二区三区| 日韩a级黄色片| 在线观看的黄色| 精品视频在线免费观看| 久久av一区二区三| 最新国产精品视频| 久久综合88中文色鬼| 日韩精品久久久久久久酒店| 日本成人中文字幕在线视频| av激情久久| h网站视频在线观看| 一区二区三区欧美日| 国产成人无码a区在线观看视频| 欧美不卡高清一区二区三区| 日韩精品一区二区三区视频| 国产精品国产三级国产专业不| 欧美视频官网| 国产精品自拍偷拍| 天堂在线观看视频| 亚洲欧洲国产专区| 乱子伦视频在线看| 2020国产精品极品色在线观看| 国产亚洲精品一区二区| 精品无码人妻一区二区三区品| 日本伊人色综合网| 国产亚洲福利社区| sm国产在线调教视频| 色屁屁一区二区| 无码成人精品区在线观看| 国产大片一区| 国产精品成人免费电影| 日本xxxxwww| 亚洲精品国产a久久久久久| 免费观看成人网| 欧美尿孔扩张虐视频| 久久久97精品| 中文人妻熟女乱又乱精品| 97精品国产露脸对白| 黄色片免费在线观看视频| 欧美激情福利| 在线观看不卡av| av图片在线观看| 99这里只有久久精品视频| www.avtt| 亚洲精品高潮| 欧美老女人性视频| 国产乱淫av免费| 国产精品色哟哟网站| 国产精品天天av精麻传媒| 亚洲免费福利一区| 91超碰caoporn97人人| 亚洲av无码国产综合专区| 亚洲男人的天堂网| 亚洲精品视频三区| 99久久.com| 成人天堂噜噜噜| 久操免费在线| 欧美精品在线一区二区| 日韩精品电影一区二区三区| 久久综合伊人| 日韩电影免费观看在| 日韩成人亚洲| 亚洲人成自拍网站| 国产一区免费看| 亚洲国产精品精华液ab| 成人午夜激情av| 成久久久网站| 成人精品久久一区二区三区| caopen在线视频| 日韩视频免费观看高清完整版 | 国产精品视频专区| a√在线中文网新版址在线| 欧美三级电影网站| 好吊日在线视频| 国产精品456| av无码久久久久久不卡网站| 日韩激情啪啪| 国产精品盗摄久久久| 婷婷五月在线视频| 日韩一区二区不卡| 国产无套在线观看| 国产午夜精品一区二区三区嫩草 | 视频一区视频二区视频| 69堂免费精品视频在线播放| 精品国模在线视频| 亚洲精选一区二区三区| 欧美视频免费在线观看| 黄色片网站在线播放| 国产suv一区二区三区88区| 日本少妇高潮喷水视频| 激情五月色综合国产精品| 成人国产在线视频| aa国产成人| 国产一区二区欧美日韩| 国产三区在线播放| 午夜电影一区二区三区| 51妺嘿嘿午夜福利| 久久精品国产亚洲aⅴ| 丁香六月激情婷婷| 第一会所sis001亚洲| 99一区二区三区| 一区二区电影免费观看| 久久精品在线视频| 日韩二区三区| 在线不卡一区二区| 在线能看的av| 亚洲青青青在线视频| 97人妻精品一区二区免费| 黑人巨大精品欧美黑白配亚洲| 男女超爽视频免费播放| 欧美gvvideo网站| 国产视频精品网| 91精品亚洲一区在线观看| 97在线视频免费播放| 欧美激情黑人| 亚洲成人动漫在线播放| 艳妇乳肉豪妇荡乳av| 色综合天天综合在线视频| avove在线播放| 日本一区二区三区视频视频| 欧美极品jizzhd欧美仙踪林| 久久99国产精品免费| 日韩中文字幕二区| 在线欧美一区| 老司机午夜网站| 精品国产一区二区三区久久久蜜臀 | 好吊色视频在线观看| 亚洲国产精品黑人久久久| theav精尽人亡av| 国产91丝袜在线观看| 天天干天天综合| 性一交一乱一区二区洋洋av| 国产免费一区二区视频| 亚洲成人日韩| 亚洲视频sss| 国产欧美一区| 鲁丝一区二区三区免费| 久久夜色精品国产噜噜av小说| 2022国产精品| 伊人久久综合网另类网站| 国产精品久久不能| 日韩高清成人| 欧美一级片一区| 色是在线视频| 欧美性受xxxx白人性爽| 2020国产在线| 久久久久亚洲精品| 黄色片网站在线观看| 日韩一区二区av| 婷婷视频在线| 久久五月天色综合| 国产一二区在线| 日韩视频精品在线| 日本中文字幕在线播放| 色吧影院999| 求av网址在线观看| www.国产精品一二区| 婷婷在线视频观看| 超薄丝袜一区二区| av网址在线| 九九热精品视频国产| 久久久123| 97在线看福利| 欧美xxxxxx| 国产精品视频精品视频| 9999在线精品视频| 91超碰在线电影| 国产精品av一区二区三区| 亚洲国产第一| 亚洲国产成人精品久久| 国产精品视频一二区| 7777精品伊人久久久大香线蕉| 一区二区 亚洲| 91精品国产高清一区二区三区 | 国产精品大片| 激情五月宗合网| 一本色道久久精品| 国产精品少妇在线视频| 另类成人小视频在线| 久久婷婷中文字幕| 成人免费高清视频在线观看| 亚洲熟妇无码av| 国产精品你懂的在线欣赏| 九九精品视频免费| 五月天婷婷综合| 国产又粗又猛又黄视频| 69久久99精品久久久久婷婷| 亚洲精品第五页| 亚洲视频在线免费观看| 日本欧美在线视频免费观看| 欧美成人免费大片| 性欧美freesex顶级少妇| 国产精品三级网站| 一区二区视频| 日韩成人av电影在线| 综合久久亚洲| 超碰97人人射妻| 韩国三级在线一区| 好男人香蕉影院| 国产精品素人一区二区| 国产无套在线观看| 欧美日韩精品欧美日韩精品一| www天堂在线| 亚洲网在线观看| 毛片网站在线看| 国产精品午夜视频| 欧美高清视频看片在线观看 | 亚洲成a人无码| 国产日韩v精品一区二区| 欧美日韩精品亚洲精品| 色综合网站在线| 亚洲精品福利网站| 日韩网站在线观看| 三上悠亚国产精品一区二区三区| 51国偷自产一区二区三区| 精品日韩免费| 免费超爽大片黄| 国产一区二区三区黄片| 国产精品综合一区二区三区| 一区二区三区少妇| 亚洲私人黄色宅男| 久久久久久久久久一级| 精品久久一二三区| 欧美精品videos另类| 国产成人精品在线视频| 久久久久97| 亚洲色婷婷久久精品av蜜桃| 人人精品人人爱| 超碰97在线资源站| 亚洲图片有声小说| 99视频国产精品免费观看a| 亚洲网址你懂得| 日韩激情电影免费看| 国产精品福利视频| 一区二区三区四区电影| 国产九九热视频| 久久精品免视看| 黑人精品无码一区二区三区AV| 亚洲精品美女在线| 韩国成人免费视频| 99re国产| 欧美成人日本| 亚洲一区二区三区四区精品| 国产精品久久久久久久浪潮网站| 在线观看日本网站| 亚洲欧美国产日韩天堂区| 成人观看网址| 久久久久久久久久码影片| 最新日韩av| 51调教丨国产调教视频| 午夜精品一区二区三区免费视频 | 一区二区三区的久久的视频| 日韩国产成人精品| 第一次破处视频| 欧美亚洲高清一区二区三区不卡| 欧美zozo| 国产精品盗摄久久久| 日韩毛片视频| 青青草久久伊人| 亚洲欧美日韩系列| 国内毛片毛片毛片毛片| 久久九九精品99国产精品| 国产日韩一区二区三免费高清| 成人短视频在线看| 国产精品一卡二| www.99re7.com| 亚洲精品久久久久中文字幕二区| 色是在线视频| 日韩av不卡播放| 麻豆免费精品视频| 国产午夜手机精彩视频| 日韩精品一区二区三区中文精品 | 色爱综合网欧美| 中文字幕国产高清| 亚洲一区二区高清| 婷婷在线观看视频| 青青久久av北条麻妃黑人| 欧洲福利电影| 国产欧美精品一二三| 亚洲综合图片区| 亚洲日本在线播放| 国产精品色婷婷视频| 欧美在线日韩| 日韩中文字幕电影| 欧美日韩国产精品成人| 欧美人与禽性xxxxx杂性| 久久综合狠狠综合久久综青草| 日本色综合中文字幕| 免费网站看av| 亚洲美女中文字幕| 99er精品视频| 怡红院av亚洲一区二区三区h| 国产亚洲人成网站| 99riav国产| 欧美专区中文字幕| 99久久影视| 一级国产黄色片| 欧美精品在线一区二区三区| ****av在线网毛片| 亚洲成人av动漫| 成人国产精品免费网站| 欧美成人一区二区视频| 欧美国产精品日韩| 精品国产乱码久久久久久蜜坠欲下 |