求VB6.0写的后台模拟按键

要求:1.窗口标题"记事本"获取窗口句柄2.后台发送字符串3.后台按键.(是按键!)要求源码....分少的话可以追加..如果写的很清楚很详细追家300分!那些在网上复制过... 要求:
1.窗口标题 "记事本" 获取窗口句柄
2.后台发送字符串
3.后台按键.(是按键!)
要求源码....分少的话 可以追加..
如果写的很清楚 很详细 追家300分!
那些在网上复制过来的就不必浪费时间了...
好象不能用在游戏中...有什么方法可以用在游戏中吗?
展开
 我来答
liuekj
2010-07-09 · TA获得超过163个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:0
展开全部
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private 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

Private Declare Function SendMessageByString& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String)

Private Const WM_CHAR = &H102
Private Const WM_SETTEXT = &HC

'以下是查找窗口 Edit 的代码:
Private Function MyFindWindow() As Long
'父窗口类名数组
Dim A_szClassName(2) As String
A_szClassName(0) = "Notepad"
A_szClassName(1) = "Edit"
'父窗口标题数组
Dim A_szWinName(2) As String
A_szWinName(0) = "无标题 - 记事本"
A_szWinName(1) = ""
'首先求得顶级父窗口
Dim i As Long
Dim hLastWin As Long
hLastWin = FindWindow(A_szClassName(0), A_szWinName(0))
'逐次用FindWindowEx函数求出各级子窗口
For i = 1 To 1
hLastWin = FindWindowEx(hLastWin, 0, A_szClassName(i), A_szWinName(i))
Next i
MyFindWindow = hLastWin
End Function

Private Sub Command1_Click()

Dim hLastWin As Long

'1.窗口标题 "记事本" 获取窗口句柄

hLastWin = MyFindWindow()

Dim a As String

a = " Hello World! 你好,世界! "

'2.后台发送字符串
SendMessageByString& hLastWin, WM_SETTEXT, 0, a

'3.后台按键.(是按键!)
PostMessage hLastWin, WM_CHAR, Asc("a"), 0

End Sub

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

应该可以...如果不行...可以试用下激活窗口 然后 SendKey

这个方法 帝国时代 可以...其它游戏不知道了
杭州一知智能科技有限公司
2022-03-17 广告
电话机器人主要就是用来模拟人工通话的一组程序,一般由,CRM系统,语义识别,转换文字,话术体系,这是软的部分,再加上底层软交换和通信模块一起,合并起来就是一套完整的电话机器人系统。电话机器人可以代替真人进行电话工作的,像是电话营销、售后回访... 点击进入详情页
本回答由杭州一知智能科技有限公司提供
FinHack炼金术
2010-07-09 · TA获得超过607个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:94.6万
展开全部
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long'获取标题
Private Declare Function GetForegroundWindow Lib "user32" () As Long'获取顶层句柄
dim tmpstr as string*255

添加一个timer控件,在事件中写
GetWindowText GetForegroundWindow(),tmpstr,256
if instr(tmpstr,"记事本")>0 then
sendkeys "字符串"
endif

具体可以在百度搜搜sendkeys的用法,还有获取顶层窗口标题的代码,大概原理就是搁那么几百毫秒判断一下,然后发送按键,不过要注意要发送按键前要先把你的计时器关掉,要不然可能会造成重复发送,也就是加一句 timer1.enable=false。上面代码没上机试,你再自己试一下吧,不行的话再追问。不过你要是想写情书啥的我还是建议自己打开一个记事本窗口更好些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kamael_147
2010-07-10
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
'记事本的输入区是一个Edit类型
'findwindow声明略
'findwindowEx声明略
'postmessage声明略
'还有些常数声明略

dim hwdFather as long,hwdChild as long

hwdFather=findwindow("notepad","记事本")
hwdchild=findwindEx(hwdFather,0,"Edit",vbnullstring)
postmessage hwdchild,wm_char,asc("a"),0

'反正大概就这么的思路,我这里没VB,参数也不知道对不对。

研究下这几个函数,网上例子一大把
mouse_event
keybd_event
getCursorPos
setCursorPos
不过对于DX类游戏很难。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式