高分征求鼠标控制程序

Raser 2004-06-23 08:21:47
本来应该不难实现,但在下很久没玩VB了,请各位大虾帮忙做一个吧。要求如下:

当按下ctrl键时自动获取当前鼠标坐标位置pointX,pointY并把鼠标定位到新的位置X0,Y0。即使程序处于后台,也可以响应Ctrl事件。

如果源码文件,请发邮件到ser@mota.cn。或者把主程序帖上来也成。先谢谢了。
...全文
176 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
pigpag 2004-06-26
  • 打赏
  • 举报
回复
//我不知道可不可以把单独一个Ctrl键定义成全局热键

用GetAsyncKeyState+Timer扫描
dongge2000 2004-06-26
  • 打赏
  • 举报
回复
TO:pigpag(噼里啪啦 - 阿弥陀佛,祝福各位同仁高考成绩美丽)
大概是这样的
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Function XX(DG)
XX = (GetAsyncKeyState(DG) < 0)
End Function

Private Sub Timer2_Timer()
If XX(vbKeyEscape) Then
'End******
End If
If XX(vbKeyTab) Then
'*******
End If
End Sub
dongge2000 2004-06-26
  • 打赏
  • 举报
回复
.Form1
Private Sub Form_Load()
Dim ret As Long
preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf Wndproc)

idHotKey = 1
Modifiers = MOD_CONTROL
uVirtKey = 0&
ret = RegisterHotKey(Me.hwnd, idHotKey, Modifiers, uVirtKey)
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim ret As Long
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
Call UnregisterHotKey(Me.hwnd, uVirtKey)
End Sub
dongge2000 2004-06-26
  • 打赏
  • 举报
回复
.Moudle
Option Explicit

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long

Public Const WM_HOTKEY = &H312
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const GWL_WNDPROC = (-4)
Public Const BM_CLICK = &HF5
Public preWinProc As Long
Public Modifiers As Long, uVirtKey As Long, idHotKey As Long

Private Type taLong
ll As Long
End Type

Private Type t2Int
lWord As Integer
hWord As Integer
End Type
Public iii As Long
Public hWndlong As Long
Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY Then
If wParam = idHotKey Then
Dim lp As taLong, i2 As t2Int
lp.ll = lParam
LSet i2 = lp
If (i2.lWord = Modifiers) And i2.hWord = uVirtKey Then
'*你想做的事
End If
End If
End If
Wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)

End Function
ssihc 2004-06-26
  • 打赏
  • 举报
回复
你要给我加分!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ssihc 2004-06-26
  • 打赏
  • 举报
回复
兄弟,,,你想做什么?????做小外挂啊!!!!
ssihc 2004-06-26
  • 打赏
  • 举报
回复
calss1:
Option Explicit
Public Type ProcData
AppHwnd As Long
title As String
Placement As String
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Type POINTAPI
X As Long
Y As Long
End Type
Public Const WM_GETTEXT = &HD
Public Const WM_GETTEXTLENGTH = &HE
Public Const WM_SETTEXT = &HC
Public Const MOUSEEVENTF_LEFTDOWN = &H2
Public Const MOUSEEVENTF_LEFTUP = &H4
Public Const GW_CHILD = 5
Public Const GW_HWNDNEXT = 2
Public Const GW_HWNDFIRST = 0
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function GetForegroundWindow& Lib "user32" ()
Public Declare Function SetCursorPos& Lib "user32" (ByVal X As Long, ByVal Y As Long)
Public Declare Function GetCursorPos& Lib "user32" (lpPoint As POINTAPI)
Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

form1:
Option Explicit
Dim i As Integer
Private Sub Command1_Click()
MsgBox "ddd"

End Sub

Private Sub Command2_Click()
Dim dl&
Dim NewPoint As POINTAPI
Dim myrect As RECT
Dim i As Integer
dl& = GetWindowRect(Command1.hwnd, myrect)
'dl& = GetCursorPos(OldPoint) '获取当前鼠标位置
NewPoint.X = myrect.Left + (myrect.Right - myrect.Left) \ 2
NewPoint.Y = myrect.Top + (myrect.Bottom - myrect.Top) \ 2
SetCursorPos NewPoint.X, NewPoint.Y
mouse_event MOUSEEVENTF_LEFTDOWN, NewPoint.X, NewPoint.Y, 0, 0
For i = 0 To 10 '延时
Sleep 20
DoEvents
Next
mouse_event MOUSEEVENTF_LEFTUP, NewPoint.X, NewPoint.Y, 0, 0
End Sub
Raser 2004-06-25
  • 打赏
  • 举报
回复
Ctrl+F12也成啊
gdami 2004-06-23
  • 打赏
  • 举报
回复
似乎单独一个不行吧.
用过的一些奇迹外挂都是ctrl+F12的.呵呵
BlueBeer 2004-06-23
  • 打赏
  • 举报
回复
控制鼠标位置倒不难,用两个API:GetCursorPos和SetCursorPos
关键是按你要求还需要定义全局热键,我不知道可不可以把单独一个Ctrl键定义成全局热键
gdami 2004-06-23
  • 打赏
  • 举报
回复
这个只能读自己程序上窗体的点啊.

估计他是要做个类似外挂的东东吧.
可能要用到消息函数.
gzhiceberg 2004-06-23
  • 打赏
  • 举报
回复
Dim blnControl As Boolean

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim lngCtrlDown&

lngCtrlDown = (Shift And vbCtrlMask) > 0
If lngCtrlDown Then
blnControl = True
End If
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
blnControl = False
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If blnControl Then
Label1.Caption = "X:" & X & " Y: " & Y
End If
End Sub
ryuginka 2004-06-23
  • 打赏
  • 举报
回复
up
Raser 2004-06-23
  • 打赏
  • 举报
回复
对了,还有一点要求,用VB6实现
基于滑模SMC-PID的二自由度机械臂轨迹跟踪控制仿真(Simulink仿真、Matlab代码)内容概要:本文详细介绍了基于滑模SMC-PID的二自由度机械臂轨迹跟踪控制仿真研究,结合Simulink仿真与Matlab代码实现,旨在复现相关期刊论文的核心内容。文中重点探讨了滑模控制(SMC)与PID控制相结合的复合控制策略在机械臂轨迹跟踪中的应用,通过设计合理的滑模面与控制律,提升系统对参数不确定性及外部干扰的鲁棒性,同时利用PID调节增强控制精度与动态响应性能。仿真模型构建完整,涵盖机械臂动力学建模、控制器设计、轨迹规划与跟踪效果可视化等环节,验证了所提控制方法的有效性与优越性。; 适合人群:具备自动控制理论基础、熟悉Matlab/Simulink环境,从事机器人控制、机电一体化或相关方向研究的研究生及科研人员。; 使用场景及目标:①学习并掌握滑模控制与PID融合的控制策略设计方法;②复现经典控制算法在机械臂轨迹跟踪中的仿真过程;③为科研项目或课程设计提供可参考的代码与实现框架; 阅读建议:建议读者结合文档目录顺序逐步学习,重点关注控制器设计原理与Simulink模块搭建细节,动手运行并调试配套代码,深入理解各参数对系统性能的影响,进而实现自主改进与优化。

7,788

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧