資源描述:
《C#利用句柄操作窗口》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、C#寫個類操作窗口(句柄操作)實現(xiàn)過程:過程一:找到當(dāng)前鼠標(biāo)位置的句柄您的使用2個WinAPI(俺喜歡自己封裝下來用):ViewCode[DllImport("user32.dll",EntryPoint="GetCursorPos")]publicstaticexternboolGetCursorPos(outPointpt);[DllImport("user32.dll",EntryPoint="WindowFromPoint")]publicstaticexternIntPtrWindowFromPoint(Poi
2、ntpt);//鼠標(biāo)位置的坐標(biāo)publicstaticPointGetCursorPosPoint(){Pointp=newPoint();if(GetCursorPos(outp)){returnp;}returndefault(Point);}//////找到句柄//////坐標(biāo)///publicstaticIntPtrGetHandle(Pointp){returnWindowFromPoint
3、(p);}過程二:改變窗口的Text您的使用1個WinAPI:ViewCode[DllImport("user32.dll",EntryPoint="SendMessage")]privatestaticexternintSendMessage(IntPtrhWnd,intMsg,IntPtrwParam,stringlParam);//////給窗口發(fā)送內(nèi)容//////句柄///要發(fā)送的內(nèi)容
4、publicstaticvoidSetText(IntPtrhWnd,stringlParam){SendMessage(hWnd,WM_SETTEXT,IntPtr.Zero,lParam);}privateconstintWM_SETTEXT=0x000C;通過這個方法就能改變Text的值了。思考:如果俺把這個窗口的句柄記錄下來,下次不用鼠標(biāo)獲取,直接就能改變值不蠻好的嘛。例如:我有個桌面系統(tǒng)老叫我輸入用戶名,密碼。我記錄用戶名和密碼的窗口句柄,然后改變他們的輸入值,這樣多省事。(只是舉例,不考慮安全
5、性)問題:你會告訴我,窗口句柄的每次重建會變的呀,咋辦?;卮穑侯惷蛔冄健_^程三:您的準(zhǔn)備一些工具吧,例如:句柄找類名呀,類名找句柄什么的等等,下面會用到一些WinAPIViewCode[DllImport("user32.dll",EntryPoint="FindWindow")]privatestaticexternIntPtrFindWindow(stringIpClassName,stringIpWindowName);[DllImport("user32.dll",EntryPoint="FindWindowE
6、x")]privatestaticexternIntPtrFindWindowEx(IntPtrhwndParent,IntPtrhwndChildAfter,stringlpszClass,stringlpszWindow);[DllImport("user32.dll",EntryPoint="GetParent")]publicstaticexternIntPtrGetParent(IntPtrhWnd);[DllImport("user32.dll",CharSet=CharSet.Auto)]publicsta
7、ticexternintGetClassName(IntPtrhWnd,StringBuilderlpClassName,intnMaxCount);//////找到句柄//////類名///publicstaticIntPtrGetHandle(stringIpClassName){returnFindWindow(IpClassName,null);}////
8、//子窗口句柄//////父窗口句柄///前一個同目錄級同名窗口句柄///類名///