c 使用win32api實現獲取游標位置

2022-09-27 09:39:12 字數 1632 閱讀 5531

方法一:需要呼叫win32api,winform、wpf通用

[dllimport("user32.dll")]

public static extern bool getcursorpos(out point lppoint);

[structlayout(layoutkind.sequential)]

public struct point

}方法二:通過調程式設計客棧用win32 api設定滑鼠位置,實現移到指定位置,模仿並實現滑鼠點選動作,並回到滑鼠原先位置的方法,**如下:

//獲取螢幕

int width = (int)systemparameters.primaryscreenwidth;//得到螢幕整體寬度

int height = (int)systemparam得到螢幕整體高度

//獲取滑鼠初始位置,相對螢幕的絕對位置

system.drawing.point p = new system.drawing.point();

www.cppcns.com

apihelper.getcursorpos(out p);

if (width != 0) p.x = 65535 *www.cppcns.com p.x / width;

if (height != 0) p.y = 65535 * p.y / height;

//設定移動的位置座標

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);//移動到需要點選的位置

//完成一次點選

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);

//雙擊則再重複單擊方法

//回到初始位置

apihelper.mouse_event((int)(mouseeventflag.mouseeventf_move | mouseeventflag.mouseeventf_absolute), p.x, p.y, 0, intptr.zero);//移動到需要點選的位置

**中apihelper為作者封裝的win32 api方法,讀者可以通過api精靈等軟體查詢api函式,自行實現封裝。

本文標題: c#使用win32api實現獲取游標位置

本文位址:

win32彙編使用win32 api實現字串拷貝

字串拷貝,呼叫win32的lstrcpy函式 拷貝了以後用訊息框顯示一下 386 model flat,stdcall option casemap none include s masm32 include windows.inc include s masm32 include user32.i...

win 32Api獲取系統記憶體函式

windows程式設計中 獲取系統記憶體資訊有2個api,分別是globalmemorystatus和globalmemorystatu globalmemorystatus函式可以在c語言咧直接呼叫,但是globalmemorystatu 卻不可以直接呼叫,因為globalmemorystatu ...

用Win32 API實現序列通訊

2003 7 9 7 56 18 pcvc.wangxi 閱讀次數 30453 串列埠是常用的計算機與外部序列裝置之間的資料傳輸通道,由於序列通訊方便 易行,所以應用廣泛。我們可以利用windows api 提供的通訊函式編寫出高可移植性的 序列通訊程式。在win16中,可以利用open m clo...