.Net封装好的方法

int Control.MousePosition.X;int Control.MousePosition.Y;

用API方法

using System.Runtime.InteropServices;
Point p;[DllImport("user32.dll")]public static extern bool GetCursorPos(out Point pt);private void timer1_Tick(object sender, EventArgs e){   GetCursorPos(out p);   label1.Text p.X.ToString();//X坐标   label2.Text p.Y.ToString();//Y坐标}

利用Reflector去查看Control.MousePosition属性,其源代码如下:

public static Point MousePosition{   get   {      NativeMethods.POINT pt new NativeMethods.POINT();      UnsafeNativeMethods.GetCursorPos(pt);      return new Point(pt.x, pt.y);   }}

其中NativeMethods.POINT类,它的构造代码如下:

public class POINTpublic int x;   public int y;   public POINT()   {   }   public POINT(int x, int y)   {     this.x;     this.y;   }}

它和System.Drawing.Point类的构造是一样的,所以上面用API的方法中,我们可以直接用System.Drawing.Point类去声明一个对象。

再看UnsafeNativeMethods.GetCursorPos(pt); 这句代码,它的GetCursorPos方法源码如下:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]public static extern bool GetCursorPos([InOut] NativeMethods.POINT pt);

到这里,已经很明了了,.Net封装好的Control.MousePosition,其实也是调用这个API的。

如果你的程序讲究效率的话,应该使用原生态的API方法,虽然代码会多几行。

C#动态获取鼠标坐标的更多相关文章

  1. 原生js获取鼠标坐标方法全面讲解-zmq

    原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:eve ...

  2. JS 获取鼠标坐标

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 用VBS控制鼠标(获取鼠标坐标、鼠标移动、鼠标单击、鼠标双击、鼠标右击)

    Demon's Blog 忘记了,喜欢一个人的感觉 Demon's Blog  »  程序设计  »  用VBS控制鼠标(获取鼠标坐标.鼠标移动.鼠标单击.鼠标双击.鼠标右击) « bbPress积分 ...

  4. 原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y【转】

    关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种 event.clientX/Y event.pageX/Y event.offsetX/Y event.layerX/Y event.sc ...

  5. JavaScript-4.6鼠标事件监听,获取鼠标坐标window.event---ShinePans

    <html> <head> <meta http-equiv="content-type" content="text/html" ...

  6. 用VBS控制鼠标的实现代码(获取鼠标坐标、鼠标移动、鼠标单击、鼠标双击)

    网上搜到的答案普遍是VBS无法实现,或者是要用第三方COM(ActiveX?)组件.我对第三方组件是很反感的,使用第三方组件毫无可移植性可言,因为别人的系统中不一定注册了这个组件.我的建议是,尽量不要 ...

  7. 原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y

    关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种 event.clientX/Y event.pageX/Y event.offsetX/Y event.layerX/Y event.sc ...

  8. js获取鼠标坐标位置兼容多个浏览器

    这个是IE 11 下兼容下视图测试时可用. $(window).bind('beforeunload', function (event) { var _this = this; var x = ev ...

  9. 002--VS C++ 获取鼠标坐标并显示在窗口上

    //--------------------------------------------MyPaint() 函数------------------------------------------ ...

随机推荐

  1. Flash与 Javascript 交互

    网页加载时立即调用 ExternalInterface.addCallback中定义的函数会失败,放到按键中调用正常. 推测:可能是flash对象加载时间略长,网页加载到js时,flash对象尚未初始 ...

  2. install xdebug

    安装准备 安排php的xdebug扩展,在php.ini上配置xdebug.通过phpinfo或者php-m 查看 [Xdebug] zend_extension ="D:\upupw7\P ...

  3. 通用table样式

    <html> <head> <title>通用table样式</title> <style type="text/css"&g ...

  4. 从字符串获得MAC地址的方法

    今日有感于编程水平下降,特意练习一下,根据MAC地址字符串,获取MAC地址的2种方法. #include <stdio.h> void func1(char *str){ unsigned ...

  5. MySql5.7安装及配置

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS ...

  6. JavaScript设计模式--简单工厂模式例子---XHR工厂

    第一步,Ajax操作接口(目的是起一个接口检测作用) (1)引入接口文件 //定义一个静态方法来实现接口与实现类的直接检验 //静态方法不要写出Interface.prototype ,因为这是写到接 ...

  7. SAP 发送邮件 面向对象

    REPORT ZMMR0068_YYN. CONSTANTS: gc_tab TYPE c VALUE cl_bcs_convert=>gc_tab, "CL_ABAP_CHAR_UT ...

  8. 我的第一个python web开发框架(8)——项目结构与RESTful接口风格说明

    PS:再次说明一下,原本不想写的太啰嗦的,可之前那个系列发布后发现,好多朋友都想马上拿到代码立即能上手开发自己的项目,对代码结构.基础常识.分类目录与文件功能结构.常用函数......等等什么都不懂, ...

  9. 数据库中有的字段为null时,反馈到页面上是什么也不显示?如何用一个【无】字来代替呢?

    <asp:ListView ID="listViewCustomer" DataSourceID="ods_Customer" runat="s ...

  10. Nand Flash基础知识与坏块管理机制的研究

    概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次 ...