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);
}
效果 鼠标变大了
鼠标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);
}
效果 鼠标变大了
相关文章推荐
- C# 调用API,实现注销远程登录本机的用户
- c#调用google api 实现google网站上翻译全功能(原创)
- VFP调用API实现代码模拟鼠标.键盘动作
- C# 调用API,实现注销远程登录本机的用户。
- C# 调用API,实现注销远程登录本机的用户
- C#调用API实现程序间相互控制(附源码)
- 使用C#调用系统API实现内存注入的代码
- C#调用API来实现打开webbrowser中的链接
- C#调用Win32 API,实现简单的IP地址修改
- c#实现调用MP3等格式音频文件API
- 实现用C#和VB.NET调用Ghostscript的API,把Postscript文件转为PDF文件。
- C# 调用API,实现注销远程登录本机的用户
- 使用C#调用系统API实现内存注入
- C#:调用API实现简繁转换
- C# 调用API,实现注销远程登录本机的用户
- C#调用API 实现窗体总在最上
- Win32关于GDI 的API (Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的。有时候我们之直接调用Win32 的API,可以很高效的实现想要)
- 用 c 调用 win-api 实现自动点击c# winform 程序 的按钮
- C#调用系统API实现内存注入的代码
- [转]C# 调用API,实现注销远程登录本机的用户