Class Autoit-通过PID获取窗口类
我想让Autoit在程序上按某个键,但“程序”窗口没有标题,每次启动时都会更改其类。唯一保持一致的是进程名称 因此,我的问题很简单:如何仅使用PID来获取Windows类?这有帮助吗Class Autoit-通过PID获取窗口类,class,autoit,pid,Class,Autoit,Pid,我想让Autoit在程序上按某个键,但“程序”窗口没有标题,每次启动时都会更改其类。唯一保持一致的是进程名称 因此,我的问题很简单:如何仅使用PID来获取Windows类?这有帮助吗 #include <Array.au3> #include <WinAPI.au3> Opt("WinDetectHiddenText", 1) ;0=don't detect, 1=do detect Opt("WinSearchChildren", 1) ;0=no, 1=search
#include <Array.au3>
#include <WinAPI.au3>
Opt("WinDetectHiddenText", 1) ;0=don't detect, 1=do detect
Opt("WinSearchChildren", 1) ;0=no, 1=search children also
Opt("WinTextMatchMode", 2) ;1=complete, 2=quick
Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
$a = ProcessGetId('firefox.exe')
For $i = 1 To UBound($a) - 1
ConsoleWrite(ProcessGetWindow($a[$i]) & @CRLF)
Next
Func ProcessGetWindow($PId)
If IsNumber($PId) = 0 Or ProcessExists(ProcessGetName($PId)) = 0 Then
SetError(1)
Else
Local $WinList = WinList()
Local $i = 1
Local $WindowTitle = ""
While $i <= $WinList[0][0] And $WindowTitle = ""
If WinGetProcess($WinList[$i][0], "") = $PId Then
$WindowTitle = $WinList[$i][0]
Else
$i += 1
EndIf
WEnd
Return $WindowTitle
EndIf
EndFunc ;==>ProcessGetWindow
Func ProcessGetId($Process)
If IsString($Process) = 0 Then
SetError(2)
ElseIf ProcessExists($Process) = 0 Then
SetError(1)
Else
Local $PList = ProcessList($Process)
Local $i
Local $PId[$PList[0][0] + 1]
$PId[0] = $PList[0][0]
For $i = 1 To $PList[0][0]
$PId[$i] = $PList[$i][1]
Next
Return $PId
EndIf
EndFunc ;==>ProcessGetId
Func ProcessGetName($PId)
If IsNumber($PId) = 0 Then
SetError(2)
ElseIf $PId > 9999 Then
SetError(1)
Else
Local $PList = ProcessList()
Local $i = 1
Local $ProcessName = ""
While $i <= $PList[0][0] And $ProcessName = ""
If $PList[$i][1] = $PId Then
$ProcessName = $PList[$i][0]
Else
$i = $i + 1
EndIf
WEnd
Return $ProcessName
EndIf
EndFunc ;==>ProcessGetName
#包括
#包括
Opt(“WinDetectHiddenText”,1);0=不检测,1=确实检测
选择(“WinSearchChildren”,1);0=否,1=同时搜索子项
Opt(“WinTextMatchMode”,2);1=完成,2=快速
选择(“WinTitleMatchMode”,2);1=开始,2=次级,3=精确,4=高级,-1至-4=无条件
$a=ProcessGetId('firefox.exe')
对于$i=1到UBound($a)-1
控制台写入(ProcessGetWindow($a[$i])&@CRLF)
下一个
Func ProcessGetWindow($PId)
如果IsNumber($PId)=0或ProcessExists(ProcessGetName($PId))=0,则
设置错误(1)
其他的
本地$WinList=WinList()
本地$i=1
本地$WindowTitle=“”
而$i处理GetWindow
Func ProcessGetId($Process)
如果IsString($Process)=0,则
设置错误(2)
ElseIf ProcessExists($Process)=0然后
设置错误(1)
其他的
本地$PList=ProcessList($Process)
本地$i
本地$PId[$PList[0][0]+1]
$PId[0]=$PList[0][0]
$i=1至$PList[0][0]
$PId[$i]=$PList[$i][1]
下一个
返回$PId
恩迪夫
EndFunc;==>ProcessGetId
Func ProcessGetName($PId)
如果IsNumber($PId)=0,则
设置错误(2)
如果$PId>9999,则
设置错误(1)
其他的
本地$PList=ProcessList()
本地$i=1
本地$ProcessName=“”
而$i ProcessGetName