您的位置:首页 > Web前端 > CSS

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

2011-04-24 22:17 423 查看
前些天客户要在大屏上,操作组态图。巨晕啊,当时现场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);

}

效果 鼠标变大了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: