"把所有的Win32API?"
不会吧,看了多久?嘿,贴一些.NET做不到的api啊,.NET做得到的话,没人会用的。
推荐一本书《NET Framework Solutions - In search the lost of Win32 API》不要给狗狗知道噢,他追求纯C#,不喜欢Win32Api的 :)
不会吧,看了多久?嘿,贴一些.NET做不到的api啊,.NET做得到的话,没人会用的。
推荐一本书《NET Framework Solutions - In search the lost of Win32 API》不要给狗狗知道噢,他追求纯C#,不喜欢Win32Api的 :)
解决方案 »
- 请问,获取文件的相对路劲
- |zyciis| 用bat注册了一个Windows服务后如何让他是自动启动的啊 还有我现在这个服务没有效果不知道哪里出错,要如何调试呢
- 简单的异步问题
- C# 中如何处理C++中的句柄呢?
- PostMessage模拟键盘发送F1的问题
- 子窗口返回数据给父窗口
- 我在C#的窗体里设置了一个toolbar,在窗体里还有一个righbox,我把righbox放dock属性设置成了fill,就是填充整个窗体。可是这个box却跑到
- MVC同一个View,不同用户控件之间的ViewData传值
- vb.net中的Cursor.Position.X在c#中如何得到?
- TheAres班门斧凶请进,上次用sharpziplib压缩的问题!!
- 问一个相当菜的问题:有关用户自定义控件
- 如何观看csdn邮件内容
In search the lost of Win32 API
怎么成了 lost 了?晕哦
书从那个地方可以搞到,别让我用美元去买啊。谢谢
using System.Windows.Forms;namespace WinFormCS
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class Mouse
{
internal const byte SM_MOUSEPRESENT = 19;
internal const byte SM_CMOUSEBUTTONS = 43;
internal const byte SM_MOUSEWHEELPRESENT = 75; internal struct POINTAPI //用System.Drawing.Point就可以。
{
internal int x;
internal int y;
} internal struct RECT //用Rectangle 就可以
{
internal int left ;
internal int top ;
internal int right ;
internal int bottom ;
} [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="SwapMouseButton")]
internal extern static int SwapMouseButton ( int bSwap ); [System.Runtime.InteropServices.DllImport("user32" , EntryPoint="ClipCursor")]
internal extern static int ClipCursor(ref RECT lpRect);
//直接对Cursor.Clip 设置就可以 [System.Runtime.InteropServices.DllImport( "user32.dll" , EntryPoint="GetCursorPos" )]
internal extern static int GetCursorPos( ref POINTAPI lpPoint );
//直接Cursor.Position,转换为窗体的用Control.PointToClient ,转换为Scrren用Control.PointToScreen
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint="ShowCursor")]
internal extern static bool ShowCursor ( bool bShow ) ; //Cursor.Show(); [System.Runtime.InteropServices.DllImport( "user32.dll" , EntryPoint = "EnableWindow" )]
internal extern static int EnableWindow( int hwnd , int fEnable ); [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="GetWindowRect")]
internal extern static int GetWindowRect( int hwnd , ref RECT lpRect ) ;
// [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="SetCursorPos")]
internal extern static int SetCursorPos ( int x , int y ) ;
//Cursor.Position [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="GetSystemMetrics")]
internal extern static int GetSystemMetrics( int nIndex );
//这个在Screen中有包含 [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="SetDoubleClickTime")]
internal extern static int SetDoubleClickTime ( int wCount ); [System.Runtime.InteropServices.DllImport("user32.dll" , EntryPoint="GetDoubleClickTime")]
internal extern static int GetDoubleClickTime() ;
//SystemInformation.DoubleClickTime
[System.Runtime.InteropServices.DllImport("kernel32.DLL", EntryPoint="Sleep")]
internal extern static void Sleep ( int dwMilliseconds ) ; //Thread.Sleep //得到鼠标相对与全屏的坐标,不是相对与你的Form的,且与你的分辨率有关系
//前面已经有了。 public static int FullScreenPosition_X
{
get
{
POINTAPI _POINTAPI = new POINTAPI(); GetCursorPos ( ref _POINTAPI ); return _POINTAPI.x;
}
} public static int FullScreenPosition_Y
{
get
{
POINTAPI _POINTAPI = new POINTAPI(); GetCursorPos ( ref _POINTAPI ); return _POINTAPI.y;
}
} // 隐藏 显示 鼠标 public static void Hide()
{
ShowCursor( false ) ;
}
// Cursor.Hide(); public static void Show()
{
ShowCursor( true ) ;
}
//Cursor.Show(); // 将鼠标锁定在你的Form里 不过你得将你的Form先锁了,Form Resize 就失效了 public static void Lock( System.Windows.Forms.Form ObjectForm )
{
RECT _FormRect = new RECT (); GetWindowRect( ObjectForm.Handle.ToInt32() , ref _FormRect ); ClipCursor( ref _FormRect );
//直接对Cursor.Clip赋值
} public static void UnLock()
{
RECT _ScreenRect = new RECT (); _ScreenRect.top = 0;
_ScreenRect.left = 0;
_ScreenRect.bottom = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Bottom;
_ScreenRect.right = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Right; ClipCursor( ref _ScreenRect );
} // 鼠标失效,不过失效的好像不只是鼠标,小心哦 public static void Disable( System.Windows.Forms.Form ObjectForm )
{
EnableWindow( ObjectForm.Handle.ToInt32() , 0 ) ;
} public static void Enable( System.Windows.Forms.Form ObjectForm )
{
EnableWindow( ObjectForm.Handle.ToInt32() , 1 ) ;
} // 鼠标自己移动 很想动画哦 参数是2个控件的handle
// 看这个方法前,先用凉水擦把脸 反正我写的时候 头晕
public static void Move ( int From_Handle_ToInt32 , int To_Handle_ToInt32 )
//用这个帖子中的API
//如何用程序实现键盘和鼠标的模拟?
//http://expert.csdn.net/Expert/TopicView3.asp?id=1567478
{
RECT rectFrom = new RECT () ;
RECT rectTo = new RECT () ; int i ; GetWindowRect( From_Handle_ToInt32 , ref rectFrom ) ;
GetWindowRect( To_Handle_ToInt32 , ref rectTo ) ; if ( ( rectFrom.left + rectFrom.right ) / 2 - ( rectTo.left + rectTo.right ) / 2 > 0 )
{
for ( i = ( rectFrom.left + rectFrom.right ) / 2 ; i >= ( rectTo.left + rectTo.right ) / 2 ; i-- )
{
SetCursorPos ( i , ( rectFrom.top + rectFrom.bottom ) / 2) ;
Sleep ( 1 ) ;
}
}
else
{
for ( i = ( rectFrom.left + rectFrom.right ) / 2 ; i <= ( rectTo.left + rectTo.right ) / 2 ; i++ )
{
SetCursorPos ( i , ( rectFrom.top + rectFrom.bottom ) / 2) ;
Sleep ( 1 ) ;
}
} if ( ( rectFrom.top + rectFrom.bottom ) / 2 - ( rectTo.top + rectTo.bottom ) / 2 > 0 )
{
for ( i = ( rectFrom.top + rectFrom.bottom ) / 2 ; i >= ( rectTo.top + rectTo.bottom ) / 2 ; i-- )
{
SetCursorPos ( ( rectTo.left + rectTo.right ) / 2 , i ) ;
Sleep ( 1 ) ;
}
}
else
{
for ( i = ( rectFrom.top + rectFrom.bottom ) / 2 ; i <= ( rectTo.top + rectTo.bottom ) / 2 ; i++ )
{
SetCursorPos ( ( rectTo.left + rectTo.right ) / 2 , i ) ;
Sleep ( 1 ) ;
}
}
} // 得到你的鼠标类型 public static string Type
{
get
{
if ( GetSystemMetrics( SM_MOUSEPRESENT ) == 0 )
{
return "本计算机尚未安装鼠标" ; //SystemInformation.MousePresent
}
else
{
if ( GetSystemMetrics( SM_MOUSEWHEELPRESENT ) != 0 )
{
return GetSystemMetrics( SM_CMOUSEBUTTONS ) + "键滚轮鼠标" ;
//SystemInformation.MouseWheelPresent
}
else
{
return GetSystemMetrics( SM_CMOUSEBUTTONS ) + "键鼠标" ;
}
}
}
} // 设置鼠标双击时间 public static void DoubleClickTime_Set( int MouseDoubleClickTime )
{
SetDoubleClickTime( MouseDoubleClickTime );
} public static string DoubleClickTime_Get()
{
return GetDoubleClickTime().ToString() ;
} // 设置鼠标默认主键 我是没有见过谁左手用鼠标 public static void DefaultRightButton()
{
SwapMouseButton ( 1 ) ;
} public static void DefaultLeftButton()
{
SwapMouseButton ( 0 ) ;
} }
}