热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

零起点学VB做外挂(四)

前一段,我们学了基本的键盘模拟部分,但是对于只是前台的模拟,大家应该不会满足吧,那么今天我们要做的就是后台模拟。呵呵,很企盼吧!后台模拟,就要用到postmessage或者sen

   前一段,我们学了基本的键盘模拟部分,但是对于只是前台的模拟,大家应该不会满足吧,那么今天我们要做的就是后台模拟。呵呵,很企盼吧!

  后台模拟,就要用到postmessage或者sendmessage,大家可以google下他们的详细资料。我这里先放上他们的声明吧:

Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

但首先我们是怎么找到所要操作的窗口呢?当然是下面的函数了:

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
这个函数可以利用窗口名来找到句柄,而句柄就是我们进行下一步的关键了。
我们拿记事本为例来写个小程序吧,工具是VB6.0:

Private Sub keytest_Click()
        hWndGt = FindWindow(vbNullString, "无标题 - 记事本")

        Label13.Caption = ""
        Label13.Caption = "记事本母窗口句柄:0x" & Hex(hWndGt)  '利用label13显示记事本句柄
        
        WaitingSeconds (0.3)
        childhwnd = FindWindowEx(hWndGt, vbNullString, "Edit", "") 
        Label14.Caption = ""
        Label14.Caption = "记事本子窗口句柄:0x" & Hex(childhwnd)'利用label14显示记事本的子窗口“edit”的句柄
        WaitingSeconds (0.3)

        Dim i As Integer
        looptime = 1
       
       
        For i = 1 To looptime Step 1

            PostMessage childhwnd, WM_KEYDOWN, VK_I, 0&  '输出I
            PostMessage childhwnd, WM_KEYDOWN, VK_SPACE, 0&  '输出space
            PostMessage childhwnd, WM_KEYDOWN, VK_SPACE, 0&  '输出space
            WaitingSeconds (0.5)
            PostMessage childhwnd, WM_KEYDOWN, VK_L, 0& '输出L
            PostMessage childhwnd, WM_KEYDOWN, VK_O, 0& '输出O
            PostMessage childhwnd, WM_KEYDOWN, VK_V, 0& '输出V
            PostMessage childhwnd, WM_KEYDOWN, VK_E, 0& '输出E
            PostMessage childhwnd, WM_KEYDOWN, VK_SPACE, 0&  '输出space
            PostMessage childhwnd, WM_KEYDOWN, VK_SPACE, 0&  '输出space
            WaitingSeconds (0.5)
            PostMessage childhwnd, WM_KEYDOWN, VK_Y, 0& '输出Y
            PostMessage childhwnd, WM_KEYDOWN, VK_O, 0& '输出O
            PostMessage childhwnd, WM_KEYDOWN, VK_U, 0& '输出U
            PostMessage childhwnd, WM_KEYDOWN, VK_ENTER, 0&  '输出enter
           
            WaitingSeconds (0.5)
        Next

        
        Label15(0).Caption = ""
        Label15(0).Caption = "记事本发送完成"

End Sub
上边这段程序是这样做得:先找到记事本的窗口,但是由于记事本的特点,它的母窗口并不能让我们进行操作,只有它的第一个子窗口“Edit”才是我们可以进行操作的。所以我们又利用函数FindWindowEx找到它的第一个子窗口“Edit”的句柄。然后在Edit窗口进行了模拟按键的输出“I LOVE YOU”。

无论记事本是在前台,还是后台,甚至最小化的时候,我们依然可以利用上面的函数将“I LOVE YOU”输入进记事本,是不是很感慨呢。现在我们已经初步完成了模拟按键的学习。

无论前台还是后台,我们都能做到!  外挂,我们来了!


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • java线条处理技术_Java使用GUI绘制线条的示例
    在Java的GUI编程中,如何使用GUI绘制线条?以下示例演示了如何使用Graphics2D类的Line2D对象的draw()方法作为参数来绘制一条线。 ... [详细]
  • Thisissuewasoriginallyopenedbyashashicorp/terraform#5664.Itwasmigratedhe ... [详细]
  • vue使用
    关键词: ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • vb.net面试题,请大家帮忙,谢谢。如果需要讲详细一点,那就加我QQ531412815第4题,潜在的错误,这里的错误不是常规错误,属于那种只有在运行是才知道的错误:Catchex ... [详细]
  • oracle安装时找不到启动,Oracle没有开机自启是怎么回事?这一步骤很重要
    重启Oracle数据库重启Oracle数据库包括启动Oracle数据库服务进程和启动Oracle数据库两步,大家继续往下看。按照《【Oracle】什么?作为DBA&# ... [详细]
  • PostgreSQL的upsert实例操作(insert
    建表语句:DROPTABLEIFEXISTSgoods;CREATETABLEgoods(store_cdint4NOTNULL,good_cdvarchar(50 ... [详细]
  • 关于python调试大法的信息
    本文目录一览:1、pdbpython调试怎么用 ... [详细]
  • 【ExtJS】自定义组件datetimefield(一)
    目的:ExtJS中提供了下拉日期选择控件Ext.form.field.Date与下拉时间选择控件Ext.form.field.Time。不过没有一个在选择日期时选择时间的控件dat ... [详细]
  • 本文介绍了解决mysql 5.1启动问题的方法,通过修改my.ini文件中的相关配置,包括innodb_data_home_dir和skip-innodb等,可以解决启动问题。同时还介绍了如何调整内存池来存储metadata信息。 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
author-avatar
手机用户2502879747
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有