首页>
知识库>
详情

VB的一些入门小知识

2020-07-16 来源:CloudBest 阅读量: 0
关键词:

  以下是用VB做外挂的一些知识.我个人认为是入门的一些知识.不敢独享.贴出来给大家!~

  有时间随时补充~呵呵

  1.查找目标窗口.需要做外挂,就需要查找目标窗口.然后才做一些其他的动作.比如说鼠标键盘模拟啦.内存修改啦.封包型发送与替换啦什么什么的

  -------------------------------------------------------------------------------------------------

  '定义模块

  Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

  '在窗口中建立一timer(时间控制器),然后在代码窗口输入如下代码:

  Private Sub Form_Load()

  Timer1.Interval = 500

  End Sub

  时间控制器的代码如下:

  Private Sub Timer1_Timer()

  Dim hwnd As Long

  hwnd = FindWindow(vbNullString, "计算器") '抓取"计算器"这个窗口名称.

  If (hwnd = 0) Then

  If MsgBox("你没有打开[计算器]程序!点击“确定”退出。点“取消”继续。", 49, "错误!") = 1 Then End

  ElseIf (hwnd <> 0) Then

  MsgBox "你已经打开了[计算器]程序.点“确定”退出本程序", , "退出"

  End

  End If

  End Sub

  2.以下为模拟键盘事件.比如模拟"r"键.

  ----------------------------------------------------------------------------------------------------------------------------

  '在模块中定义

  Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

  在窗口中建立一timer.时间间隔随意.只要不是0就可以了哦.呵呵.

  Private Sub Timer1_Timer()

  Call keybd_event(82, 0, 0, 0) '模拟按下"R"键

  End Sub

  3.以下为快捷键例子.比如按下"ctrl+A"就退出!

  '可以设置Form的KeyPreview属性为True,然后在Form_KeyDown事件中添加代码:

  Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

  If KeyCode = Asc("A") And Shift = vbCtrlMask Thenunload me '如果ctrl+A键被按下就退出

  End Sub

  例二:

  在Form中加入

  Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Long) As Integer

  Private Function MyHotKey(vKeyCode) As Boolean

  MyHotKey = (GetAsyncKeyState(vKeyCode) < 0)

  End Function

  '然后在循环中或Timer的Timer事件中检测:

  Private Sub Timer1_Timer()

  If MyHotKey(vbKeyA) And vbKeyControl Then 'ctrl+A

  End'关闭

  End If

  '其中vbkeyA是键盘″A″的常数,其他键可按F1查得。

  End Sub

  一些控制鼠标的例子!

  1.模拟鼠标击键过程

  '声明:

  Option Explicit

  Private 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)

  '对变量的定义

  Const MOUSEEVENTF_LEFTDOWN = &H2

  Const MOUSEEVENTF_LEFTUP = &H4

  Const MOUSEEVENTF_MIDDLEDOWN = &H20

  Const MOUSEEVENTF_MIDDLEUP = &H40

  Const MOUSEEVENTF_MOVE = &H1

  Const MOUSEEVENTF_ABSOLUTE = &H8000

  Const MOUSEEVENTF_RIGHTDOWN = &H8

  Const MOUSEEVENTF_RIGHTUP = &H10

  '这里是 鼠标左键按下 和松开两个事件的组合即一次单击

  mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0

  '模拟鼠标右键单击事件

  mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0

  '两次连续的鼠标左键单击事件 构成一次鼠标双击事件

  mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0

  mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0

  2.模拟鼠标显示.隐藏

  隐藏/显示鼠标.

  Public Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long

  'forml中函数如下

  '隐藏鼠标(需要事件击活,比如窗体事件等)

  ShowCursor False

  '显示鼠标(需要事件击活,比如窗体事件等)

  ShowCursor True

  3.定位鼠标,使之不能移动

  定位鼠标。

  Type rect

  sbleft As Long

  sbtop As Long

  sbright As Long

  sbbottom As Long

  End Type

  Public Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long

  '鼠标定位

  Private Sub Form_Load()

  '定位鼠标

  Dim x As Long, y As Long

  Dim newrect As rect

  x& = Screen.TwipsPerPixelX

  y& = Screen.TwipsPerPixelY

  With newrect '鼠标只能在500,500-500,500这个范围内移动,如果四个数一样也可以说锁定鼠标了.如果加在记时器里的话就移动不了啦.

  .sbleft = 500

  .sbtop = 500

  .sbright = 500

  .sbbottom = 500

  End With

  ClipCursor newrect

<