c#使用win32api實(shí)現(xiàn)獲取光標(biāo)位置
方法一:需要調(diào)用win32api,winform、wpf通用
[DllImport("user32.dll")] public static extern bool GetCursorPos(out POINT lpPoint); [StructLayout(LayoutKind.Sequential)] public struct POINT { public int X; public int Y; public POINT(int x, int y) { this.X = x; this.Y = y; } }
方法二:通過調(diào)用Win32 API設(shè)置鼠標(biāo)位置,實(shí)現(xiàn)移到指定位置,模仿并實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊動作,并回到鼠標(biāo)原先位置的方法,代碼如下:
//獲取屏幕 int width = (int)SystemParameters.PrimaryScreenWidth;//得到屏幕整體寬度 int height = (int)SystemParameters.PrimaryScreenHeight;//得到屏幕整體高度 //獲取鼠標(biāo)初始位置,相對屏幕的絕對位置 System.Drawing.Point p = new System.Drawing.Point(); ApiHelper.GetCursorPos(out p); if (width != 0) p.X = 65535 * p.X / width; if (height != 0) p.Y = 65535 * p.Y / height; //設(shè)置移動的位置坐標(biāo) int dy = 100; int dx = 100; dx = (int)(dx * 65535 / width); dy = (int)(dy * 65535 / height); //移到指定位置 ApiHelper.mouse_event((int)(MouseEventFlag.MOUSEEVENTF_MOVE | MouseEventFlag.MOUSEEVENTF_ABSOLUTE), dx, dy, 0, IntPtr.Zero);//移動到需要點(diǎn)擊的位置 //完成一次點(diǎn)擊 ApiHelper.mouse_event((int)(MouseEventFlag.MOUSEEVENTF_LEFTDOWN), 0, 0, 0, IntPtr.Zero); ApiHelper.mouse_event((int)(MouseEventFlag.MOUSEEVENTF_LEFTUP), 0, 0, 0, IntPtr.Zero);// //單擊可以寫為 ApiHelper.mouse_event((int)(MouseEventFlag.MOUSEEVENTF_LEFTDOWN | MouseEventFlag.MOUSEEVENTF_LEFTUP), 0, 0, 0, IntPtr.Zero); //雙擊則再重復(fù)單擊方法 //回到初始位置 ApiHelper.mouse_event((int)(MouseEventFlag.MOUSEEVENTF_MOVE | MouseEventFlag.MOUSEEVENTF_ABSOLUTE), p.X, p.Y, 0, IntPtr.Zero);//移動到需要點(diǎn)擊的位置
代碼中ApiHelper為作者封裝的Win32 API方法,讀者可以通過api精靈等軟件查詢api函數(shù),自行實(shí)現(xiàn)封裝。
- c# 調(diào)用Win32Api關(guān)閉當(dāng)前應(yīng)用的方法
- C# 執(zhí)行CMD命令并接收返回結(jié)果的操作方式
- C#異步方法返回void與Task的區(qū)別詳解
- C# DataSet查看返回結(jié)果集的實(shí)現(xiàn)
- C# ODP.NET 調(diào)用Oracle函數(shù)返回值時(shí)報(bào)錯(cuò)的一個(gè)解決方案
- C# WebApi 接口返回值不困惑:返回值類型詳解
- C#微信開發(fā)之接收 / 返回文本消息
- webBrowser執(zhí)行js的方法,并返回值,c#后臺取值的實(shí)現(xiàn)
- c#基于Win32Api實(shí)現(xiàn)返回Windows桌面功能
相關(guān)文章
C#實(shí)現(xiàn)把txt文本數(shù)據(jù)快速讀取到excel中
這篇文章主要介紹了C#實(shí)現(xiàn)把txt文本數(shù)據(jù)快速讀取到excel中,本文直接給出示例代碼,需要的朋友可以參考下2015-06-06C#基于正則表達(dá)式抓取a標(biāo)簽鏈接和innerhtml的方法
這篇文章主要介紹了C#基于正則表達(dá)式抓取a標(biāo)簽鏈接和innerhtml的方法,結(jié)合實(shí)例形式分析了C#使用正則表達(dá)式進(jìn)行頁面元素的匹配與抓取相關(guān)操作技巧,需要的朋友可以參考下2017-06-06.NET中實(shí)現(xiàn)彩色光標(biāo)、動畫光標(biāo)及自定義光標(biāo)的方法
這篇文章主要介紹了.NET中實(shí)現(xiàn)彩色光標(biāo)、動畫光標(biāo)及自定義光標(biāo)的方法,非常實(shí)用的功能,需要的朋友可以參考下2014-08-08C#獲取DataTable對象狀態(tài)DataRowState
這篇文章介紹了C#獲取DataTable對象狀態(tài)DataRowState的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02詳解C#使用AD(Active Directory)驗(yàn)證內(nèi)網(wǎng)用戶名密碼
這篇文章主要介紹了詳解C#使用AD(Active Directory)驗(yàn)證內(nèi)網(wǎng)用戶名密碼的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10C#實(shí)現(xiàn)讓窗體永遠(yuǎn)在窗體最前面顯示的實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)讓窗體永遠(yuǎn)在窗體最前面顯示,功能非常實(shí)用,需要的朋友可以參考下2014-07-07