获得进程PID号后,几个操作不懂如何写的问题,包括Active进程窗口,发送热键(内详)
搜遍了论坛这方面的帖子,发觉没什么案例接近事情。。。这几个问题好难解决。。。(水平太低了){:face (189):}例子:;找到MIM进程PID
$list = ProcessList("tj.exe")
;得到PID号
$PID = $list;
;得到PID的句柄
$tjHandle = _Pid2Handle($PID)
For $i = 1 to $MIMHandle
If StringInStr($tjHandle[$i], '会议') Then Send("!f")
Next
Func _Pid2Handle($PID)
;Afan提示:通过进程pid返回包含其可见窗口标题和句柄的二维数组
Local $Whall, $i, $pidHandle = [], $x = 1
$Whall = WinList()
For $i = 1 To $Whall
If WinGetProcess($Whall[$i]) = $PID And BitAND(WinGetState($Whall[$i]), 2) Then
ReDim $pidHandle[$x + 1]
$pidHandle += 1
$pidHandle[$x] = $Whall[$i]
$pidHandle[$x] = $Whall[$i]
$x += 1
EndIf
Next
Return $pidHandle
EndFunc ;==>_Pid2Handle第一个问题:;找到MIM进程PID
$list = ProcessList("tj.exe")
;得到PID号
$PID = $list;假如没有tj.exe进程的话,执行到$PID是会abort的,请问有何办法可以判断出$list是有东西,还是没东西的,来作出下一步的行为操作?(有东西的才往下执行 For...到最后)
第二个问题:If StringInStr($tjHandle[$i], '会议') Then ******(How Active?)虽然tj.exe单个进程,但多窗口,我想WinWaitActive这个包含“会议"字眼的句柄窗口?是否可以做到通过获得句柄来Active此窗口?
第三个问题:If StringInStr($tjHandle[$i], '会议') Then Send("!f")实际上我只是想往这个窗口发送按键,但似乎发出的alt+f是没有作用的,于是我打算轮流向$tjHandle到发出
alt+f,看看谁才是“真”的窗口,针对这样的$tjHandle发送按键,应该如何写呢?(向指定的句柄发送热键?) 很不错的问题!牵涉到进程、窗口管理、数组、循环判断。第一个问题比较简单,你可以在帮助文件的Processlist参数说明那看到返回值的定义,再用if判断语句就可以解决。 谢谢老大解答,第一个问题似乎解决了,做了个判断。。。
页:
[1]