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

来源:互联网 发布:unity3d金属材质球 编辑:程序博客网 时间:2024/05/03 17:35

前些天客户要在大屏上,操作组态图。巨晕啊,当时现场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);

 

        }

 效果 鼠标变大了

 

 

原创粉丝点击