ycw565 发表于 2011-1-30 16:41:15

pid 怎么转 handle 啊

pid 怎么转 handle 啊 谢谢各位,很基础的问题了

想最大化指定进程的窗口

$pid=ProcessExists("acad.exe")
WinActivate (handle ) 这个不知道怎么来

ycw565 发表于 2011-1-30 16:43:11

或者,怎么最大化含有 ("acad.exe")的窗口

xyold1 发表于 2011-1-30 16:50:33

一个进程可以有多个窗口的,如果你知道了进程,那么用 _WinAPI_EnumWindowsTop()枚举出各窗口句柄,根据句柄比对进程名,那样应改可以的

stcyk 发表于 2011-1-30 16:53:50

重点在思路。。怎么做~

02256905 发表于 2011-1-30 17:02:50

WinGetProcess ( "title" [, "text"] )

02256905 发表于 2011-1-30 17:09:52

Local $Var = WinList()
        For $i = 1 to $Var
                If $Var[$i] <> "" And IsVisible($var[$i]) Then
                        $avArray[$i] = WinGetProcess($Var[$i])   ; Get all visible title PID.
                        If $PID = $avArray[$i] Then    ;MATCH TEH KNOWN PID
                                $Titile = $Var[$i]   
                                WINGETHANDLE($Titile)
                               
                        EndIf
                EndIf
        Next
EndFunc

Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
Else
    Return 0
EndIf
EndFunc

easied 发表于 2011-1-31 11:09:13

Func fn_GetWinHandleFromPID($iPID)
        ;获取PID所属窗口句柄
        Local $ahResult = [,["",""]]
        ReDim $ahResult
        Local $ahWnd = WinList()
        For $i = 1 To $ahWnd Step 1
                If WinGetProcess($ahWnd[$i]) == $iPID Then
                        $ahResult += 1
                        ReDim $ahResult[$ahResult + 1]
                        $ahResult = $ahWnd[$i]
                        $ahResult = $ahWnd[$i]
                EndIf
        Next
       
        Return($ahResult)
EndFunc

easied 发表于 2011-1-31 11:12:10

补充一句,因为个人喜好的原因,上面的函数和winlist的返回结果有些不一样.

fn_GetWinHandleFromPID($iPID)的返回结果:
$ahResult = 窗口数量
$ahResult = 第一个窗口句柄
$ahResult = 第一个窗口标题
$ahResult = 第二个窗口句柄
$ahResult = 第二个窗口标题

foboy 发表于 2011-2-1 04:37:34

#Include <WinAPIEx.au3>
_WinAPI_EnumProcessWindows(pid, 是否可见)
这个函数是调用枚举制定进程的窗口。使用之前必须先包含WinAPIEx.au3,这个文件是默认自带的。
第一个参数是进程的PID,第二个参数:默认True为仅枚举可见窗体, False为枚举所有窗体包括不可见的.
返回值
成功: 指定进程的窗体句柄和类的二维数组.
    - 数组元素数量.
    - 无用
    - 第一个窗体的句柄.
    - 第一个窗体的类名.
    - 第n个窗体的句柄.
    - 第n个窗体的类名.
失败: 返回0并设置@error非0
页: [1]
查看完整版本: pid 怎么转 handle 啊