C# 调用API 实现控制系统鼠标样式

前些天客户要在大屏上,操作组态图。巨晕啊,当时现场3-4个人在大屏下找鼠标指挥操作。组态图非要用鼠标操作。这这个就不说了。当时想了2个方案一个是silverlight中直接替换鼠标样式。另一个是WINFROM程序控制。由于silverlight替换鼠标属于伪替换,实际上是把系统鼠标隐藏起来自己换张图片。在操作上会有延迟。故采用C/S来实现。以下下代码实现。

鼠标PNG图形有一点要注意,实际上鼠标的有效位置是PNG巨型的对角线的焦点。所以制作PNG的时候需要注意。否则会感觉鼠标超级不听话。

 

using System.Runtime.InteropServices;

      

  [DllImport("User32.DLL")]

        public static extern bool SetSystemCursor(IntPtr hcur, uint id);

        public const uint OCR_NORMAL = 32512;

        public const uint OCR_IBEAM = 32513;

 

        [DllImport("User32.DLL")]

        public static extern bool SystemParametersInfo(uint uiAction, uint uiParam,

            IntPtr pvParam, uint fWinIni);

        public const uint SPI_SETCURSORS = 87;

        public const uint SPIF_SENDWININICHANGE = 2;

 

 

       private void button1_Click(object sender, EventArgs e)

        {

  //设置鼠标

          

            Bitmap bmp = new Bitmap(System.Windows.Forms.Application.StartupPath+@"/.png", true);         

            Cursor cursor ;//= new Cursor(colorCursorHandle); 

            cursor = new Cursor(bmp.GetHicon());

         

           SetSystemCursor(cursor.Handle, OCR_NORMAL);

           SetSystemCursor(cursor.Handle, OCR_IBEAM);

         }

 

 

  private void button2_Click(object sender, EventArgs e)

        {

            //

            SystemParametersInfo(SPI_SETCURSORS, 0, IntPtr.Zero, SPIF_SENDWININICHANGE);

 

        }

 效果 鼠标变大了

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值