鼠标移动痕迹 C#,Delphi,VB,VB.net四种语言版本(附窗体透明)-思路和源代码(1)
来源:互联网 发布:对于网络直播你怎么看 编辑:程序博客网 时间:2024/05/29 11:08
QQ交流:740382997
或者发邮件给我:yichensoft@126.com
翼尘软件工作室
翼尘Q群号:252367359
鼠标移动痕迹,四种语言版本的实现。
VB版下载地址:http://download.csdn.net/detail/u011351840/5753079
VB.net版下载地址:http://download.csdn.net/detail/u011351840/5753069
C#版下载地址:http://download.csdn.net/detail/u011351840/5753061
Delphi版下载地址:http://download.csdn.net/detail/u011351840/5753063
先看效果:Delphi版本的
其他语言效果:
先说下思路吧,既然是鼠标痕迹,那么一定要从MouseMove之类的事件开始,记录下每次鼠标移动之后的位置。
之后在每次移动的位置上画一个圈(或者其他图形),这里可以用Timer计时,比如1秒之后这个圈消失,然后就能形成一种鼠标移过之后出现尾巴的效果。
接下来说一下具体如何实现吧,从比较简单的VB开始
画控件的时候除了一个窗体和一个Timer之外什么都不需要了。
代码中我们需要三个数组和两个变量,这三个数组的大小可以任意,但是必须大小相同,这个数字代表了能够在屏幕上出现的最多圆圈(或者其他图形)的数量。
Dim xv(1024) As DoubleDim yv(1024) As DoubleDim si(1024) As DoubleDim size As IntegerDim ce As Integer在Load中初始化,-1表示空记录,而size代表的刚才数组的长度,si数组记录的是圈的初始,这里我设置成了2
Private Sub Form_Load()size = 1024For i = 0 To sizexv(i) = -1yv(i) = -1si(i) = 2Next iEnd Sub接下来是刚才提到的MouseMove事件,ce记录的是记录的数量,每次Move都往xv和yv中记录此次的x和y值,然后ce自加,也就是所记录的储存数量增加,如果ce大于size,那么ce清零,这也就是为什么数组的大小先定了能够在屏幕上出现的圆圈数量。
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)xv(ce) = xyv(ce) = Yce = ce + 1If (ce >= size) Thence = 0End IfEnd Sub为了让效果更好,我们可以在Timer中添加时间,使圆圈从小到大,达到限定值时消失(读者可以自己改进为渐变消失)
Form1.ClsFor i = 0 To sizeIf (xv(i) <> -1) ThenForm1.Circle (xv(i), yv(i)), si(i), RGB(Rnd() * 255, Rnd() * 255, Rnd() * 255)si(i) = si(i) + 20If (si(i) > 300) Thenxv(i) = -1yv(i) = -1si(i) = 2End IfEnd IfNext i这是在窗体中实现鼠标的痕迹,那么如果把鼠标痕迹融入到平时使用电脑的过程中呢,这时候我们需要让窗体透明。
通过查询API函数我们可以查出以下函数能使窗体透明。
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As LongPrivate Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As LongPrivate Const HWND_TOPMOST = -1Private Const WS_EX_LAYERED = &H80000Private Const GWL_EXSTYLE = (-20)Private Const LWA_ALPHA = &H2Private Const LWA_COLORKEY = &H1FormLoad中添加
SetWindowPos Form1.hwnd, -1, 0, 0, 0, 0, FlagMe.BackColor = &HFF0000Dim rtn As LongDim BorderStylerBorderStyler = 0rtn = GetWindowLong(hwnd, GWL_EXSTYLE)rtn = rtn Or WS_EX_LAYEREDSetWindowLong hwnd, GWL_EXSTYLE, rtnSetLayeredWindowAttributes hwnd, &HFF0000, 0, LWA_COLORKEY这时候窗体就能透明了,不过同时MouseMove事件也不能触发了,那么我们又需要用到一个获取鼠标位置的API函数
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Type POINTAPIx As Longy As LongEnd TypeDim position As POINTAPI这样在Timer中不停监视鼠标位置就可以了
xv(ce) = position.xyv(ce) = position.y以上就是通过VB实现的
下一篇,Delphi版本
鼠标移动痕迹 C#,Delphi,VB,VB.net四种语言版本(附窗体透明)-思路和源代码(2)
- 鼠标移动痕迹 C#,Delphi,VB,VB.net四种语言版本(附窗体透明)-思路和源代码(1)
- 鼠标移动痕迹 C#,Delphi,VB,VB.net四种语言版本(附窗体透明)-思路和源代码(2)
- 鼠标移动痕迹 C#,Delphi,VB,VB.net四种语言版本(附窗体透明)-思路和源代码(3)
- 三种语言的下载者源代码:C Delphi Vb
- VB无所不能之四:制作透明和半透明窗体
- VB.NET编程之透明窗体篇
- vb实现透明窗体
- [VB.NET]限制鼠标拖动窗体函数
- [VB.NET].net 下窗体透明,窗体上控件不透明
- VB.NET移动无边框窗体 两种方法
- 有钱与没钱的C C# DELPHI VB VB.NET JAVA版本
- vb .net 主窗体和登录窗体
- [VB.NET]单元四 窗体编程
- VB+MapX移动鼠标放大和缩小
- VB窗体透明实现方法
- [原创][VB.NET] 用LayeredWindow制作PNG透明窗体心得
- VB和VB.NET中获得其他窗体控件句柄
- 三、VB.NET 多语言版本的开发之From窗体调用
- ubuntu下SVN服务器安装配置
- centos安装eric4出现“No module named QtHelp”的解决办法
- Algorithm to find square root of an algorithm
- Duilib中的子类化
- winform配置文件的简单使用
- 鼠标移动痕迹 C#,Delphi,VB,VB.net四种语言版本(附窗体透明)-思路和源代码(1)
- 手机CPU之各个厂家比较
- 使用POI生成Excel报表
- 有如下4个变量: String a="abc"; String b="abc"; String c=new String("abc"); String d=new String("abc"); 为什么
- Notepad++ QuickText 插件的 HTML 配置: \Notepad++\plugins\Config\QuickText.ini
- 免费开源程序企业构建集成系统iMatrix平台发布,分享下!
- oracle中设置自增主键
- java 参数传递
- TopCoder中插件的用法