vb脚本模拟
‘壹’ VB模拟键盘enter键和方向键的UP键循环
应该调用 API FindWindow 获取你想要发送的对象窗口的句柄
由于未定发送对象是父类还是子类窗口
那么用SENDKEYS 则在 sendkeys前 用 API SetFocus (与VB内部保留名重叠,声明函数换别名 然后 引用原名) SendKeys string (up 对应{UP} enter 对应 {ENTER})
每次SendKeys 之前用 API GetFocus 确定目标句柄正确
还有就是用API MapVirtualKey 把 VbKeyEnter 和 VbKeyUp 转换成扫描码
用 keybd_event 把扫描码对应的键模拟出来 之前要设定输入焦点
‘贰’ VB 后台 模拟按键 求助
代码我就不多写了,写多了也晕,本人有想过你这个功能,但是具体实现还是没有实现过。我说一下我认为的理论思路。
首先这个肯定要使用API函数了,初步涉及3个。
PostMessage '
SendMessage '
GetWindow( m_LocalWnd, GW_CHILD),
这个API的功能可以网络查查详细的,这就不细说了。下面简单引用一下。
此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。
说一下你的问题的思路。
1。获取B程序的控制句柄,
2。获取B程序的需要发送到哪个子控件的子句柄。
通俗一点举例说明就是:B程序有一个界面,界面上有三个编辑窗,需要往哪个编辑窗里面输入"F"这个字符?如果是当前界面,光标闪的那个拿键盘输入肯定没问题,但问题是B程序是后台运行的,不是当前的,所以要获得B程序里面的需要发送的,也就是哪个控件接收这个“F”字符的“子控件句柄”。
例如:获取方法有很多,可以使用GetWindow( m_LocalWnd, GW_CHILD), GW_HWNDNEXT 来枚举B程序的每个子控件,GetClassName 来判断那个子控件的类名称是 什么,然后确定或者使用代码判断。
3.使用 PostMessage, sendmessage 向程序发送信息。
这只是思路,看你的意图好像是编写某脚步,实现某游戏挂机的目的。上有对策下有政策。这些都是老思路了,如果是成熟的游戏他应该是把这种屏蔽掉了看,需要使用更进一步的手段对付。
SendMessage的详细说明链接看吧,列出来贴出了太乱了。
http://ke..com/view/1080187.html?wtp=tt
PostMessage:
http://ke..com/view/1080179.htm
GetWindow:
http://ke..com/view/1080323.htm
以上全是个人意见,仅供参考。
如有雷同纯属巧合
希望对你有帮助。
软件屏蔽虚拟按键很正常的。
‘叁’ 在Vbscript脚本里怎么模拟出“Win+R”的组合键
Sendkey无法直接发送Win键的,但是用Ctrl和Esc组合键可以模拟 win键(用于打开开始菜单),如果再想同时运行R键,就比较困难了。
自己写了一个很不成熟的,仅提供思路:用ctrl和Esc打开开始菜单,然后连续按15次R键(这里取决于你的电脑灵敏度),然后执行2次Enter(最后一次是确认的“运行程序提示 无法运行R命令”对话框的)
Set oWsh = CreateObject("Wscript.Shell")
oWsh.SendKeys "^{Esc}{r 15}{~ 2}"
建议用VB调用API函数,VBS无法解释API函数。
‘肆’ 找个大神帮忙写一个简单的VB脚本~~
假设有12.txt,放在D:根目录下,其中数据如下:
45554
122132
12112312
121121
123222
98522
45622
写一个vbs脚本,12.vbs,也放在D:根目录下,内容如下:
dim str
str=""
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ("D:12.txt", ForReading)
Do Until objTextFile.AtEndOfStream
strComputer = objTextFile.ReadLine
str=str+"0X"+strComputer+vbCrLf
Loop
objTextFile.Close
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ("D:56.txt", ForAppending, True)
objTextFile.Write(str)
objTextFile.Close
执行12.vbs(双击即可),会在D:生成56.txt,其中数据如下:
0X45554
0X122132
0X12112312
0X121121
0X123222
0X98522
0X45622
、、、、、、、、、、、、、、、、
是否满足你的要求了,请采纳!
‘伍’ 用VB如何编写游戏脚本
脚本主要是辅助操作,读取与改写内存要借助api函数的
‘陆’ 推荐一个VB运行脚本的方法
VB所需要的所有代码只能写在程序源码中.
要实现你说的功能,只能借用VBS
VB不是解释性的编程语言.VB程序源代码都是被编译成机械码后才成EXE文件的.
所以VB编译好的程序没有运行代码的函数.
如果不怕麻烦,就把所有代码的处理程序写到VB中.
要不就利用VBS脚本中的execute函数,在VBS中执行execute(a),则字符串a会被当程序执行.比如在VBS中:
a="Msgbox(now)"
execute (a)
的执行结果等于Msgbox(now)的结果.
把你要处理的代码以字符串(记得换行!)的形式存在a中,再在VBS中执行
execute(a)
即可.
‘柒’ vb 模拟按键 参数
参考吧:
vbs SendKey用法
简单说,这个命令就是模拟键盘操作,将一个或多个按键指令发送到指定Windows窗口来控制应用程序运行,其使用格式为:
object.SendKeys string
"object":表示WshShell对象
"string":表示要发送的按键指令字符串,需要放在英文双引号中.
1.基本键
一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母"x",使用
WshShell.SendKeys "x" 即可.
也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可.例如,要发送按键"cfan",可以使用" WshShell.SendKeys "cfan" ".
2.特殊功能键
对于需要与Shift、Ctrl、Alt三个控制键组合的按键SendKeys使用特殊字符来表示:
特殊控制键 特殊字符
Shift +
Ctrl ^
Alt %
如要发送的组合按键是同时按下Ctrl+E,需要用" WshShell.SendKeys "^e" "表示,
如果要发送的组合按键是按住Ctrl键的同时按下E与C两个键,这时应使用小括号把字母括起来,书写格式为" WshShell.SendKeys "^(ec)" ".这里要注意它与" WshShell.SendKeys "^ec" "的区别,后者表示组合按键是同时按住Ctrl和E键,然后松开Ctrl键,单独按下"C"字母键
由于"+"、"^"这些字符用来表示特殊的控制按键了,如何表示这些按键呢?只要用大括号括住这些字符即可.例如,要发送加号"+",可使用" WshShell.SendKeys "{+}" ".另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键号名称,例如要发送回车键,需要用" WshShell.SendKeys "{ENTER}" "表示,发送向下的方向键用" WshShell.SendKeys "{DOWN}" "表示.
小提示
如果需要发送多个重复的单字母按键,不必重复输入该字母,SendKdys允许使用简化格式进行描述,使用格式为"{按键 数字}".例如要发送10个字母"x",则输入" WshShell.SendKeys "{x 10}" "即可.
3.翻译上手实例
" WshShell.SendKeys "^{ESC}u" "这句翻译为:按下Ctrl+Esc组合键(相当于按Win键)打开"开始"菜单,按着按U键打开"关机"菜单.
---Just Do It---------------------------------
让VBS脚本自动在词本中输入一行文字"Hello, welcome to cfan".
Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 200
WshShell.AppActivate " 无标题 - 记事本 "
WshShell.SendKeys "hello, welcome to cfan"
我们最常用的记事本没有Word、WPS那样的自动定时存盘功能,其实利用VBS脚本再加上SendKeys命令,就能弥补这个遗憾.打开记事本,输入以下内容(以容易描述和分析,把代码分为四个部分):
'第一部分:定义变量和对象
Dim WshShell, AutoSaveTime, TXTFileName
AutoSaveTime=300000
Set WshShell=WScript.CreateObject("WScript.Shell")
TXTFileName=InputBox("请输入你要创建的文件名(不能用中文和纯数字):")
'第二部分:打开并激活记事本
WshShell.Run "notepad"
WScript.Sleep 200
WshShell.AppActivate "无标题 - 记事本"
'第三部分:用输入的文件名存盘
WshShell.SendKeys "^s"
WScript.Sleep 300
WshShell.SendKeys TXTFileName
WScript.Sleep 300
WshShell.SendKeys "%s"
WScript.Sleep AutoSaveTime
'第四部分:自动定时存盘
While WshShell.AppActivate (TXTFileName)=True
WshShell.SendKeys "^s"
WScript.Sleep AutoSaveTime
Wend
WScript.Quit
将其保存为记事本.vbs,以后要使用记事本时,都通过双击这个脚本文件来打开.
程序翻译
这个脚本的基本思路是定时向记事本发送Ctrl+S这个存盘组合键.
第一部分:定义了脚本中需要用到的变量和对象."AutoSaveTime"变量用来设置自动存盘间隔,单位为毫秒,这里设置为5分钟."TXTFileName"变量通过输入框取得你要创建的文本文件名称.
第二部分:运行记事本,对于Windows本身提供的程序,比如计算器等,可直接在"WshShell.Run"后输入程序名称,如"calc"对于非系统程序,则可输入完全路径,但要注意使用8.3格式输入,比如" "D:\Progra~1\Tencent\QQ.exe" "
第三部分:这里用SendKeys命令执行了这样的操作流程(请注意每个操作之间延时命令的使用):
在记事本中按Ctrl+S组合键→弹出保存文件的窗口→输入文件名→按Alt+S组合键进行保存(默认保存在"我的文档"目录).
第四部分:定时存盘的关键,通过"While......Wend"这个当条件为"真"时循环命令,实现自动存盘代码" WshShell.SendKeys "^s" "和定时代码" WScript.Sleep AutoSaveTime "的重复执行.因为不能让这个定时存盘循环一直执行,退出记事本后,必须自动退出脚本并结束循环,所以设计了一个循环判断条件" WshShell.AppActivate TXTFileName=True ",当记事本运行中时,可以激活记事本窗口,这个条件运行结果为"True",定时存盘循环一直执行,退出记事本后,脚本无法激活记事本窗口,就会路出循环,执行"Wend"后面的"WScript.Quit"退出脚本.
---Just Do It---------------------------------
有款软件叫"QQ多账号自动登录器",它有记住QQ账号和密码,从而帮你用指定QQ号码自动登录,特别适合有多个QQ账号的朋友.其实利用VBS脚本你完全可以DIY一个.请到http://www.newhua.com/cfan/200419/vbs.rar下载脚本实例.其中有一个双QQ号码自动登录的脚本,请对照其中的解释将其修改为适合自己的QQ自动登录脚本.
请制作一个脚本,在你复制了一段文字后,只要双击运行这个脚本,就会自动打开记事本,并自动将复制的文字粘贴进来.
-----------------------------------------------
VBS中Sendkey键盘对应的码表
Key Code
------------------------------
Shift +
Ctrl ^
Alt %
BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} or {DEL}
DOWN ARROW {DOWN}
END {END}
ENTER {ENTER}or ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} or {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
‘捌’ 利用VB制作模拟器
我给你做了:源码如下,方向键修改移动方向,空格键移动鼠标(若不会整理的话写邮箱and我发过去)
VERSION 5.00
Begin VB.Form frmMain
BorderStyle = 1 'Fixed Single
Caption = "鼠标测试"
ClientHeight = 3195
ClientLeft = 45
ClientTop = 330
ClientWidth = 3645
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 3195
ScaleWidth = 3645
StartUpPosition = 2 '屏幕中心
Begin VB.Timer Timer1
Interval = 10
Left = 120
Top = 480
End
Begin VB.CommandButton btnRight
Caption = "向右移动"
Height = 495
Left = 2520
TabIndex = 3
Top = 1200
Width = 975
End
Begin VB.CommandButton btnLeft
Caption = "向左移动"
Height = 495
Left = 120
TabIndex = 2
Top = 1200
Width = 975
End
Begin VB.CommandButton btnDown
Caption = "向下移动"
Height = 495
Left = 1320
TabIndex = 1
Top = 1920
Width = 975
End
Begin VB.CommandButton btnUp
Caption = "向上移动"
Height = 495
Left = 1320
TabIndex = 0
Top = 480
Width = 975
End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'====================================================
' 测试方法: 上下左右键修改移动方向,空格键移动
'====================================================
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Type POINTAPI
X As Long
Y As Long
End Type
Const VK_LEFT = &H25
Const VK_RIGHT = &H27
Const VK_UP = &H26
Const VK_DOWN = &H28
Dim stMousePos As POINTAPI
Dim bMoveType As Long '移动方向
Private Sub Form_Load()
bMoveType = 1 '方向初始化为向上
End Sub
Private Sub Timer1_Timer()
'============== 根据移动方向移动鼠标 ==============
If GetAsyncKeyState(32) Then '空格键
GetCursorPos stMousePos
Select Case bMoveType
Case 1
stMousePos.Y = stMousePos.Y - 10 '向上
Case 2
stMousePos.Y = stMousePos.Y + 10 '向下
Case 3
stMousePos.X = stMousePos.X - 10 '向左
Case 4
stMousePos.X = stMousePos.X + 10 '向右
End Select
SetCursorPos stMousePos.X, stMousePos.Y
End If
'============== 根据按键修改移动方向 ==============
If GetAsyncKeyState(VK_LEFT) Then
bMoveType = 3
btnLeft.SetFocus
ElseIf GetAsyncKeyState(VK_RIGHT) Then
bMoveType = 4
btnRight.SetFocus
ElseIf GetAsyncKeyState(VK_UP) Then
bMoveType = 1
btnUp.SetFocus
ElseIf GetAsyncKeyState(VK_DOWN) Then
bMoveType = 2
btnDown.SetFocus
End If
End Sub
‘玖’ 我用VB做了一个游戏脚本 用于安卓模拟器(逍遥模拟器),方法是用send模拟按键,但send了平均
是不是太快了,模拟按键 一般设置一下时间间隔。建议学习一下按键精灵,做游戏脚本很轻松,发送按键、找图之类的特别方便。
语法很多借用的VB的样子。
‘拾’ 制作vb脚本
简单点的可以绑定他的mac地址
但是mac
可以被指定 最好就是绑定他的硬盘序列号啦
如果限制时间还要有个网络校时功能 不然他该系统时间就可以用啦 ,网络时间可以从任意网站获得