找回密码
 加入
搜索
查看: 2426|回复: 3

[AU3基础] 请教一个非焦点程序发送热键的问题。。

[复制链接]
发表于 2010-7-8 15:08:59 | 显示全部楼层 |阅读模式
我从一个进程里面得到了一个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
发表于 2010-7-8 15:30:34 | 显示全部楼层
本帖最后由 afan 于 2010-7-8 15:37 编辑

试试 _SendKeys($tjHandle[$i][1],"!{s}") 或者 _SendKeys($tjHandle[$i][1],"!s"),
_SendKeys的第一个参数应该是句柄 $tjHandle[$i][1],而不是标题 $tjHandle[$i][0]。
 楼主| 发表于 2010-7-8 15:50:22 | 显示全部楼层
谢谢afan大大,我同时做了另外一个实验,
$tjHandle[0][0] 至 $tjHandle[3][1] 逐个手工试发送热键,都不起效,貌似向窗口直接发送热键应该是行不通,
我用信息工具看这个窗口时候,发现这个窗口组成很复杂,可能是由“多个不同元素窗口”组成一个窗口显示出来的,

如果实在没有什么办法,就真的只能把窗口active起来,然后模拟鼠标点击两层菜单进去了吗? 无奈。。。
发表于 2010-7-8 16:12:44 | 显示全部楼层
直接手动按键alt-s窗口行不
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 01:00 , Processed in 0.076093 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表