我从一个进程里面得到了一个PID,从PID获得了句柄,找出了窗口带“会议”字眼的句柄
现在我想向带“会议”字眼的窗口发送一个Alt+s的热键,弄来弄去都无法成功,“会议”窗口没有反应
求助各路大侠,请问是什么问题,谢谢!
窗口是非焦点的,不想Active它为焦点是因为会重修刷新窗口,内容会发生变化。。。。
这是上次得到afan大大的指点后,自己又改了一些的代码#include "PostMessage_UDF.au3"
;找到MIM进程PID
$list = ProcessList("tj.exe")
;得到PID号
$PID = $list[1][1];
;得到PID的句柄
$tjHandle = _Pid2Handle($PID)
For $i = 1 to $MIMHandle[0][0]
;If StringInStr($tjHandle[$i][0], '会议') Then Msgbox(0, '窗口句柄:' & $tjHandle[$i][1], '窗口标题:' & $tjHandle[$i][0] & @LF & '含有“结果”字样。')
;If StringInStr($tjHandle[$i][0], '会议') Then Msgbox(0,$tjHandle[$i][1],$tjHandle[$i][0])
;If StringInStr($tjHandle[$i][0], '会议') Then Msgbox(0,'',$tjHandle[$i][0]) ;列出名
;If StringInStr($tjHandle[$i][0], '会议') Then Send ("!{S}",0) ;发出按键
If StringInStr($tjHandle[$i][0], '会议') Then _SendKeys($tjHandle[$i][0],"!{s}") ;<<-------不起效????
Next
Func _Pid2Handle($PID)
;Afan提示:通过进程pid返回包含其可见窗口标题和句柄的二维数组
Local $Whall, $i, $pidHandle[1][2] = [[0]], $x = 1
$Whall = WinList()
For $i = 1 To $Whall[0][0]
If WinGetProcess($Whall[$i][1]) = $PID And BitAND(WinGetState($Whall[$i][1]), 2) Then
ReDim $pidHandle[$x + 1][2]
$pidHandle[0][0] += 1
$pidHandle[$x][1] = $Whall[$i][1]
$pidHandle[$x][0] = $Whall[$i][0]
$x += 1
EndIf
Next
Return $pidHandle
EndFunc ;==>_Pid2Handle
|