高分征求鼠标控制程序

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

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

如果源码文件,请发邮件到ser@mota.cn。或者把主程序帖上来也成。先谢谢了。
...全文
174 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实现
内容概要:本文围绕“基于共享储能服务的智能楼宇双层优化配置”展开研究,提出了一种结合上层共享储能配置优化与下层楼宇内部能源调度优化的双层协同模型,通过Matlab代码实现,旨在提升智能楼宇在复杂能源环境下的运行效率与经济性。研究充分考虑光伏出力、负荷需求等不确定性因素,引入多维核密度估计、场景生成与削减等技术进行不确定性建模,并融合需求响应、微电网调度等先进理念,实现了对综合能源系统中储能资源的高效配置与动态调控,具有较强的理论深度与工程应用价值。; 适合人群:具备电力系统、可再生能源、优化算法或综合能源系统等相关背景,从事科研、工程应用或课题研究的研发人员、研究生及高年级本科生。; 使用场景及目标:①应用于智能楼宇、园区微电网、虚拟电厂等场景中的储能规划与运行优化;②支撑高水平学术论文(如EI/SCI)的复现、课题申报、毕业设计及实际项目的双层优化建模与求解实践。; 阅读建议:建议结合提供的Matlab代码进行实操演练,重点理解双层优化架构的设计逻辑、求解策略(如Benders分解、主从博弈等)及不确定性处理方法,同时可参考文中关联技术(如场景生成、需求响应)拓展研究思路与应用场景。

7,787

社区成员

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

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