测式的程序是某Y,想实现后台自动输入内容的功能。
首先某Y是基于QT界面(QWidget类)也就是整个程序只有一个窗体,控件是没有句柄的。用VB写了段代码,测式输入内容是成功的。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 SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
Dim hw As Long
hw = 66908 '窗口句柄
'---- 以下代码测式是OK的,
'---- 将句柄窗口激活
SetForegroundWindow hw
'--- 点击句柄窗口 500*500 坐标位置
PostMessage hw, &H201, 1, 500 * 65536 + 500
PostMessage hw, &H202, 0, 500 * 65536 + 500
'--- 输入一个字母A
PostMessage hw, &H102, Asc("A"), 0
End Sub
如果去掉将目标窗口设为焦点窗口的那句 SetForegroundWindow ,就不能后台输入内容了。有大神知道如何突破这个限制,后台输入内容吗?
更多 0
首先某Y是基于QT界面(QWidget类)也就是整个程序只有一个窗体,控件是没有句柄的。用VB写了段代码,测式输入内容是成功的。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 SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
Dim hw As Long
hw = 66908 '窗口句柄
'---- 以下代码测式是OK的,
'---- 将句柄窗口激活
SetForegroundWindow hw
'--- 点击句柄窗口 500*500 坐标位置
PostMessage hw, &H201, 1, 500 * 65536 + 500
PostMessage hw, &H202, 0, 500 * 65536 + 500
'--- 输入一个字母A
PostMessage hw, &H102, Asc("A"), 0
End Sub
如果去掉将目标窗口设为焦点窗口的那句 SetForegroundWindow ,就不能后台输入内容了。有大神知道如何突破这个限制,后台输入内容吗?
更多 0
解决方案 »
- VC 中的 0x13 在VB中如何表示?
- 用Adodc与DataGrid绑定实现与Excel的连接
- 请问怎样调用MEDIA PLAYER7 或者 MEDIA PLAYER9?谢谢
- 如何使一个控件发生LostFocus事件
- Treeview中如何通过拖动节点改变树状图的结构?
- 鼠标滚轮
- 怎样声明数组作全局变量,急牙
- 请问用Microsoft.Jet.OLEDB.4.0怎样连接带密码的acess数据库.谢谢
- 兄弟们,谁先答出VB+ACCESS菜题多得分.............................
- 如何获得表中的前n个记录?
- 请教:如何用VB读取visual c#存储的文件中的4字节数字?
- 批量录入数据的问题
先测试 sendmessage
如果不行,可以试试简单点的 attxxxthreadwindow就是那个共享线程输入api
再不行再考虑hook之类的,hook太麻烦而且容易被拦截,所以最好首先考虑其它办法
这个帖子: qq_15350647 发表于: 2015-08-23提问的内容,基本上可以说是“一样的”,这都是些什么人啊。