测式的程序是某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

解决方案 »

  1.   

    post有时候给低优先级的process,thread发消息是会被吃
    先测试 sendmessage
    如果不行,可以试试简单点的 attxxxthreadwindow就是那个共享线程输入api
    再不行再考虑hook之类的,hook太麻烦而且容易被拦截,所以最好首先考虑其它办法
      

  2.   

    前一个帖子: jiaxueq 发表于: 2014-12-15
    这个帖子: qq_15350647 发表于: 2015-08-23提问的内容,基本上可以说是“一样的”,这都是些什么人啊。