找回密码
 加入
搜索
查看: 3256|回复: 8

[AU3基础] pid 怎么转 handle 啊

  [复制链接]
发表于 2011-1-30 16:41:15 | 显示全部楼层 |阅读模式
pid 怎么转 handle 啊 谢谢各位,很基础的问题了

想最大化指定进程的窗口

$pid=ProcessExists("acad.exe")
WinActivate (handle ) 这个不知道怎么来
 楼主| 发表于 2011-1-30 16:43:11 | 显示全部楼层
或者,怎么最大化含有 ("acad.exe")的窗口
发表于 2011-1-30 16:50:33 | 显示全部楼层
一个进程可以有多个窗口的,如果你知道了进程,那么用 _WinAPI_EnumWindowsTop()枚举出各窗口句柄,根据句柄比对进程名,那样应改可以的
发表于 2011-1-30 16:53:50 | 显示全部楼层
重点在思路。。怎么做~
发表于 2011-1-30 17:02:50 | 显示全部楼层
WinGetProcess ( "title" [, "text"] )
发表于 2011-1-30 17:09:52 | 显示全部楼层
Local $Var = WinList()
        For $i = 1 to $Var[0][0]
                If $Var[$i][0] <> "" And IsVisible($var[$i][1]) Then
                        $avArray[$i] = WinGetProcess($Var[$i][0])   ; Get all visible title PID.
                        If $PID = $avArray[$i] Then    ;MATCH TEH KNOWN PID
                                $Titile = $Var[$i][0]   
                                WINGETHANDLE($Titile)
                               
                        EndIf
                EndIf
        Next
EndFunc

Func IsVisible($handle)
  If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
  Else
    Return 0
  EndIf
EndFunc
发表于 2011-1-31 11:09:13 | 显示全部楼层
Func fn_GetWinHandleFromPID($iPID)
        ;获取PID所属窗口句柄
        Local $ahResult[2][2] = [[0,""],["",""]]
        ReDim $ahResult[1][2]
        Local $ahWnd = WinList()
        For $i = 1 To $ahWnd[0][0] Step 1
                If WinGetProcess($ahWnd[$i][1]) == $iPID Then
                        $ahResult[0][0] += 1
                        ReDim $ahResult[$ahResult[0][0] + 1][2]
                        $ahResult[UBound($ahResult, 1) - 1][0] = $ahWnd[$i][1]
                        $ahResult[UBound($ahResult, 1) - 1][1] = $ahWnd[$i][0]
                EndIf
        Next
        
        Return($ahResult)
EndFunc
发表于 2011-1-31 11:12:10 | 显示全部楼层
补充一句,因为个人喜好的原因,上面的函数和winlist的返回结果有些不一样.

fn_GetWinHandleFromPID($iPID)的返回结果:
$ahResult[0][0] = 窗口数量
$ahResult[1][0] = 第一个窗口句柄
$ahResult[1][1] = 第一个窗口标题
$ahResult[2][0] = 第二个窗口句柄
$ahResult[2][1] = 第二个窗口标题
发表于 2011-2-1 04:37:34 | 显示全部楼层
#Include <WinAPIEx.au3>
_WinAPI_EnumProcessWindows(pid, 是否可见)
这个函数是调用枚举制定进程的窗口。使用之前必须先包含WinAPIEx.au3,这个文件是默认自带的。
第一个参数是进程的PID,第二个参数:默认True为仅枚举可见窗体, False为枚举所有窗体包括不可见的.
返回值
成功: 指定进程的窗体句柄和类的二维数组.
&#160; &#160; [0][0] - 数组元素数量.
&#160; &#160; [0][1] - 无用
&#160; &#160; [1][0] - 第一个窗体的句柄.
&#160; &#160; [1][1] - 第一个窗体的类名.
&#160; &#160; [n][0] - 第n个窗体的句柄.
&#160; &#160; [n][1] - 第n个窗体的类名.
失败: 返回0并设置@error非0
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-25 14:09 , Processed in 0.115244 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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