版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C#WINDOWSAPIaeeasyexpansionApplicationProgrammingInterfaceC#WindowsAPI目錄CWAPI
1234WindowsapiIntroductionWindowsapi
ReferenceWindowsapicodeWindowsapiHookC#WindowsAPI1WindowsapiIntroductionWINDOWSAPI中包含很多函數(shù),約有1500多個.根據(jù)其類別主要分為:窗口及窗口過程、聲音及音頻控制、位圖及位圖處理、INI及注冊表操作、窗口效果及管理類、字體相關(guān)、錯誤處理、通用對話框、壓縮及加密控制、文件及目錄操作、剪切板使用、繪圖及圖形相關(guān)、游戲手柄及鍵盤相關(guān)、堆栰操作、圖標(biāo)光標(biāo)相關(guān)、菜單操作、HOOK及消息處理、鼠標(biāo)控制類、進(jìn)程及線程管理、文本及字符串操作、時間和定時器管理、端口及網(wǎng)絡(luò)相關(guān)、存儲及顯示打印設(shè)備、多媒體及MCI相關(guān)、內(nèi)存管理、操作系統(tǒng)SHELL、WINDOWS系統(tǒng)信息和其他等。WINDOWS中有3個非常重要的底層DLL文件:KERNEL32.DLL、USER32.DLL和GDI32.DLL。其中KERNEL32.DLL-主要包含用于管理內(nèi)存、進(jìn)程和線程的函數(shù);USER32.DLL-中包含的則是用于執(zhí)行用戶界面任務(wù)的函數(shù),比如把用戶的鼠標(biāo)點擊操作傳遞給窗口等等.GDI32.DLL-全稱是GRAPHICALDEVICEINTERFACE(圖形設(shè)備接口),包含用于畫圖和顯示文本的函數(shù),比如要顯示一個程序窗口,就調(diào)用了其中的函數(shù)來畫這個窗口.C#WindowsAPIWindowsAPI的功能分類文件系統(tǒng):對文件的基本操作包括文件的創(chuàng)建,打開,讀寫,關(guān)閉,刪除,文件屬性的更改,目錄操作,以及磁盤分卷的操作,鏡像文件加密文件系統(tǒng)等。內(nèi)存管理:主要是內(nèi)存的分配,共享,釋放等內(nèi)容,包括虛擬內(nèi)存管理,分頁機制,堆管理等。進(jìn)程線程模塊:包括進(jìn)程主程序(exe),模塊,動態(tài)鏈接庫,線程的創(chuàng)建,遍歷,同步等操作,進(jìn)程與權(quán)限等。設(shè)備I/O,驅(qū)動程序控制:加載與卸載驅(qū)動程序,控制驅(qū)動程序,與驅(qū)動程序通信等。調(diào)試與錯誤處理:包括如何開發(fā)調(diào)試器,程序運行錯誤處理,日志記錄,widows可執(zhí)行文件的結(jié)構(gòu)等。Windows系統(tǒng)消息:包括注冊表的操作,打開,讀取,植入,創(chuàng)建和刪除鍵值對,還包括系統(tǒng)基本消息的獲取和設(shè)置,如:系統(tǒng)日志,系統(tǒng)版本,計算機名等。進(jìn)程間通信:包括使用共享文件進(jìn)行進(jìn)程間的通信的方法,使用消息進(jìn)行進(jìn)程間通信:使用管道,共享內(nèi)存等方法。定時器與消息機制:消息機制是windows系統(tǒng)中很重要的一種機制,幾乎所有的windows應(yīng)用程序都在于消息打交道。而windows的消息機制又是依賴于定時器,所以了解消息機制對學(xué)習(xí)windows開發(fā)是至關(guān)重要的。C#WindowsAPI2Windowsapi
Reference引用此名稱空間,實現(xiàn)引用非托管函數(shù)usingSystem.Runtime.InteropServices使用DllImportAttribute特性來引入api函數(shù),注意聲明的是空方法,即方法體為空。
[DllImport("user32.dll")]
publicstaticexternReturnTypeFunctionName(typearg1,typearg2,...);可以使用字段進(jìn)一步說明特性,用逗號隔開,如:[DllImport("user32.dll",EntryPoint="FindWindow",CallingConvention=CallingConvention.StdCall,CharSet=CharSet.Auto,ExactSpelling=false)]
privatestaticexternIntPtrFindWindow(stringClassName,stringWindowNamw);C#WindowsAPIDlllmport[,,,,]舉例屬性1234EntryPoint:指示要調(diào)用的DLL入口點的名稱或序號。
如果你的方法名不想與api函數(shù)同名的話,要顯示指定此參數(shù)。CallingConvention:指示向非托管實現(xiàn)傳遞方法參數(shù)時所用的CallingConvention值。CallingConvention.StdCall:被調(diào)用方清理堆棧。它是從托管代碼調(diào)用非托管函數(shù)的默認(rèn)約定。CharSet:用于標(biāo)識函數(shù)調(diào)用時所采用的是Unicode還是ANSI版本。ExactSpelling=false:告訴編譯器,去決定使用Unicode還是ANSIC#WindowsAPIchartsetCharSet控制調(diào)用函數(shù)的名稱版本及指示如何向方法封送String參數(shù).。此字段被設(shè)置為CharSet值之一。如果CharSet字段設(shè)置為Unicode,則所有字符串參數(shù)在傳遞到非托管實現(xiàn)之前都轉(zhuǎn)換成Unicode字符。這還導(dǎo)致向DLLEntryPoint的名稱中追加字母“W”。如果此字段設(shè)置為Ansi,則字符串將轉(zhuǎn)換成ANSI字符串,同時向DLLEntryPoint的名稱中追加字母“A”。大多數(shù)Win32API使用這種追加“W”或“A”的約定。如果CharSet設(shè)置為Auto,則這種轉(zhuǎn)換就是與平臺有關(guān)的(在WindowsNT上為Unicode,在Windows98上為Ansi)。CharSet的默認(rèn)值為Ansi。CharSet字段也用于確定將從指定的DLL導(dǎo)入哪個版本的函數(shù)。CharSet.Ansi和CharSet.Unicode的名稱匹配規(guī)則大不相同。對于Ansi來說,如果將EntryPoint設(shè)置為“MyMethod”且它存在的話,則返回“MyMethod”。如果DLL中沒有“MyMethod”,但存在“MyMethodA”,則返回“MyMethodA”。對于Unicode來說則正好相反。如果將EntryPoint設(shè)置為“MyMethod”且它存在的話,則返回“MyMethodW”。如果DLL中不存在“MyMethodW”,但存在“MyMethod”,則返回“MyMethod”。如果使用的是Auto,則匹配規(guī)則與平臺有關(guān)(在WindowsNT上為Unicode,在Windows98上為Ansi)。如果ExactSpelling設(shè)置為true,則只有當(dāng)DLL中存在“MyMethod”時才返回“MyMethod”。C#WindowsAPIWindows數(shù)據(jù)類型BOOL布爾型變量INT_PTR指向INT類型數(shù)據(jù)的指針類型LPWSTRUnicode字符串常量BYTE字節(jié)類型
8位INT3232位符號整型SHORT無符號短整形CHAR8比特字節(jié)INT6464位符號整型SIZE_T內(nèi)存大小CONST常量LONG32位無符號longUCHAR無符號CHARDWORD無符號整型數(shù)據(jù)32LONGLONG64位符號整型UINT無符號INTDWORD32無符號整型數(shù)據(jù)32LONG3232位符號長整型ULONG無符號longDWORD64無符號整型數(shù)據(jù)64LONG6464位符號長整型VOID無類型
voidFLOAT浮點數(shù)據(jù)類型LPARAM消息的L參數(shù)HANDLE對象的句柄WPARAM消息的W參數(shù)HICON圖標(biāo)的句柄LPCSTRAnsi字符串常量HINSTANCE程序?qū)嵗浔鶯PCWSTRUnicode字符串常量HKEY注冊表鍵句柄LPDWORD指向DWORD類型數(shù)據(jù)指針HMODULE模塊的句柄WCHAR16位
Unicode字符HWND窗口句柄WINAPI函數(shù)調(diào)用方式INT32整形數(shù)據(jù)WORD16無符號整形C#WindowsAPI鍵碼值,數(shù)據(jù)類型C#WindowsAPI3ISWINDOWSAPICodehttp://pinvoke.netC#WindowsAPI
///<summary>
///鎖定系統(tǒng)///</summary>
[DllImport("user32.dll")]privatestaticexternboolLockWorkStation();
///<summary>
///鎖定鍵盤鼠標(biāo)輸入但不鎖定ctr+alt+delete
///</summary>
[DllImport("user32.dll")]privatestaticexternboolBlockInput(boolfBlockIt);privatevoidskinButton29_Click(objectsender,EventArgse)
{boolresult=BlockInput(true);if(result==false)
{thrownewWin32Exception(Marshal.GetLastWin32Error());
}
}//根據(jù)鼠標(biāo)位置信息得到鼠標(biāo)下窗體的句柄值
[DllImport("user32.dll")]
privatestaticexternIntPtrWindowFromPoint(Pointp);[DllImport("user32.dll")]privatestaticexternintGetClassName(IntPtrhWnd,StringBuilderlpClassName,intnMaxCount);privatevoidskinButton21_Click(objectsender,EventArgse)
{Pointp;GetCursorPos(outp);inthwnd=WindowFromPoint(p);IntPtrhandle=(IntPtr)hwnd;StringBuildersb=newStringBuilder(256);GetClassName(handle,sb,sb.Capacity);MessageBox.Show(sb.ToString());
}
///
設(shè)置鼠標(biāo)坐標(biāo)基于屏幕
[DllImport("user32.dll")]privatestaticexternboolSetCursorPos(intx,inty);privatevoidskinButton3_Click(objectsender,EventArgse)
{SetCursorPos(10,10);
}C#WindowsAPI
[DllImport("user32.dll")]privatestaticexternIntPtrGetActiveWindow();//獲得當(dāng)前活動窗體[DllImport("user32.dll")]publicstaticexternboolSetForegroundWindow(IntPtrhWnd);//設(shè)置窗體獲得焦點[DllImport("user32.dll")]publicstaticexternIntPtrGetForegroundWindow();//得到當(dāng)前獲得焦點的窗口句柄[DllImport("user32.dll")]
導(dǎo)入模擬鍵盤的方法,第一個值為虛擬鍵值,第二個參數(shù)為掃描不設(shè)置,為0,第三個數(shù)為按鍵狀態(tài)選項keydown為0,如果為keyup則設(shè)置成,KEYEVENT_KEYUP,第四個參數(shù)一般為0publicstaticexternvoidkeybd_event(bytebVk,bytebScan,intdwFlags,intdwExtraInfo);privatevoidskinButton10_Click(objectsender,EventArgse)
{IntPtrRevit=GetActiveWindow();SetForegroundWindow(Revit);keybd_event(0x1B,0,0,0);keybd_event(0x1B,0,2,0);keybd_event(0x1B,0,0,0);keybd_event(0x1B,0,2,0);
}[DllImport("user32.dll")]privatestaticexternIntPtrGetDesktopWindow();//獲得桌面句柄C#WindowsAPI[DllImport("user32.dll")]publicstaticexternIntPtrFindWindow(stringClassName,stringWindowNamw);[DllImport("user32.dll")]publicstaticexternintGetWindowText(inthWnd,StringBuilderlptext,intnCount);[DllImport("user32.dll")]publicstaticexternintEnumWindows(CALLBACKcall,intlParam);publicdelegateboolCALLBACK(inthwnd,intlparam);[DllImport("user32.dll")]publicstaticexternboolEnumChildWindows(IntPtrwindow,EnumWindowProccallback,IntPtrlparam);publicdelegateboolEnumWindowProc(IntPtrhWnd,IntPtrparameter);[DllImport("user32.dll")]publicstaticexternintSendMessage(IntPtrhWnd,intMsg,IntPtrwParam,intlParam);[DllImport("user32.dll")]publicstaticexternIntPtrFindWindowEx(IntPtrhwndParent,IntPtrhwndChildAfter,stringlpszClass,stringlpszWindow);C#WindowsAPIclasspropertyButton
{[DllImport("user32.dll")]publicstaticexternIntPtrFindWindow(stringClassName,stringWindowNamw);[DllImport("user32.dll")]publicstaticexternintGetWindowText(inthWnd,StringBuilderlptext,intnCount);[DllImport("user32.dll")]publicstaticexternintEnumWindows(CALLBACKcall,intlParam);publicdelegateboolCALLBACK(inthwnd,intlparam);[DllImport("user32.dll")]publicstaticexternboolEnumChildWindows(IntPtrwindow,EnumWindowProccallback,IntPtrlparam);publicdelegateboolEnumWindowProc(IntPtrhWnd,IntPtrparameter);[DllImport("user32.dll")]publicstaticexternintSendMessage(IntPtrhWnd,intMsg,IntPtrwParam,intlParam);[DllImport("user32.dll")]publicstaticexternIntPtrFindWindowEx(IntPtrhwndParent,IntPtrhwndChildAfter,stringlpszClass,stringlpszWindow);publicconstintWM_CLICK=0x00f5;publicstaticIntPtrRevit=IntPtr.Zero;publicstaticIntPtrEdit=IntPtr.Zero;C#WindowsAPIpublicstaticintSetEdit()
{CALLBACKcb=BackCallHwnd;EnumWindows(cb,0);if(Revit!=IntPtr.Zero)
{EnumWindowProcchildProc=FindChildEditHwnd;EnumChildWindows(Revit,childProc,IntPtr.Zero);if(Edit!=IntPtr.Zero)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鈣鎂磷肥生產(chǎn)工崗前技能考核試卷含答案
- 2025造船行業(yè)市場分析及趨勢前景與投資戰(zhàn)略研究報告
- 2025造紙行業(yè)循環(huán)經(jīng)濟與環(huán)保投資評估規(guī)劃分析報告
- 劍麻制品工創(chuàng)新實踐強化考核試卷含答案
- 化工蒸發(fā)工操作安全考核試卷含答案
- 復(fù)方羅布麻片對恐懼癥患者的影響評估-洞察及研究
- 化工生產(chǎn)現(xiàn)場技術(shù)員操作知識考核試卷含答案
- 水龍頭及衛(wèi)浴配件制作工崗前安全生產(chǎn)能力考核試卷含答案
- 手工地毯制作工安全素養(yǎng)競賽考核試卷含答案
- 鏜工安全知識宣貫?zāi)M考核試卷含答案
- 護理部主任年終匯報
- 《電力市場概論》 課件 第七章 發(fā)電投資分析
- 2024年新蘇教版四年級上冊科學(xué)全冊知識點(復(fù)習(xí)資料)
- 題庫二附有答案
- 市場拓展與銷售渠道拓展方案
- 工地大門施工協(xié)議書
- 文史哲與藝術(shù)中的數(shù)學(xué)智慧樹知到期末考試答案章節(jié)答案2024年吉林師范大學(xué)
- 鐵血將軍、建軍元勛-葉挺 (1)講解
- 2023年西門子PLC知識考試題(附含答案)
- 鼻鼽(變應(yīng)性鼻炎)診療方案
- 消防應(yīng)急疏散和滅火演習(xí)技能培訓(xùn)
評論
0/150
提交評論