測式的程式是某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
uj5u.com熱心網友回復:
不能。非前臺程式不回應輸入,這是普遍規則。
除非是木馬程式才會在后臺時截獲輸入。
uj5u.com熱心網友回復:
重復提問也沒用的。uj5u.com熱心網友回復:
post有時候給低優先級的process,thread發訊息是會被吃先測驗 sendmessage
如果不行,可以試試簡單點的 attxxxthreadwindow。。。就是那個共享執行緒輸入api
再不行再考慮hook之類的,hook太麻煩而且容易被攔截,所以最好首先考慮其它辦法
uj5u.com熱心網友回復:

前一個帖子: jiaxueq 發表于: 2014-12-15
這個帖子: qq_15350647 發表于: 2015-08-23
提問的內容,基本上可以說是“一樣的”,這都是些什么人啊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/91043.html
標籤:API
