里面怎么調(diào)用API?
visualc#和其它開發(fā)工具一樣也能夠調(diào)用動(dòng)態(tài)鏈接庫的API函數(shù)。.net框架本身提供了這樣一種服務(wù),允許受管轄的代碼調(diào)用動(dòng)態(tài)鏈接庫中實(shí)現(xiàn)的非受管轄函數(shù),包括操作系統(tǒng)提供的windowsapi函數(shù)。它能夠定位和調(diào)用輸出函數(shù),根據(jù)需要,組織其各個(gè)參數(shù)(整型、字符串類型、數(shù)組、和結(jié)構(gòu)等等)跨越互操作邊界。
下面以c#為例簡單介紹調(diào)用api的基本過程:
動(dòng)態(tài)鏈接庫函數(shù)的聲明
動(dòng)態(tài)鏈接庫函數(shù)使用前必須聲明,相對(duì)于vb,c#函數(shù)聲明顯得更加羅嗦,前者通過apiviewer粘貼以后,可以直接使用,而后者則需要對(duì)參數(shù)作些額外的變化工作。
動(dòng)態(tài)鏈接庫函數(shù)聲明部分一般由下列兩部分組成,一是函數(shù)名或索引號(hào),二是動(dòng)態(tài)鏈接庫的文件名。
譬如,你想調(diào)用user32.dll中的messagebox函數(shù),我們必須指明函數(shù)的名字messageboxa或messageboxw,以及庫名字user32.dll,我們知道win32api對(duì)每一個(gè)涉及字符串和字符的函數(shù)一般都存在兩個(gè)版本,單字節(jié)字符的ansi版本和雙字節(jié)字符的unicode版本。