Что нового

[Процессы] Как узнать заголовок окна по процессу

thefrog

Новичок
Сообщения
26
Репутация
0
Добрый вечер! Мне нужно узнать заголовок окна по процессу.
К примеру: у меня есть процесс firefox.exe, и мне нужно узнать точный заголовок окна, подскажите как можно это сделать?

p.s. Еще давно видел где-то на этом форуме UDF, через которую это можно сделать, но не могу найти т.к. не помню не названия, ничего :(
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Случайно не это? :whistle:
http://autoit-script.ru/index.php?topic=4579.0
 
Автор
T

thefrog

Новичок
Сообщения
26
Репутация
0
Неа. Вот http://creator-lab.ucoz.ru/load/3-1-0-19 нашел, но это не то (давно случайно нашел). Скажите, а можно узнать заголовок без использования UDF? :smile:
(если вообще это можно сделать простым способом; я уверен на АвтоИте можно ооооочень много, но для этого нужно его неплохо знать:smile:)
 

zlo-kazan

Скриптер
Сообщения
374
Репутация
100
Перебирает все окна... если в окне есть "Mozilla Firefox". то выдает msgbox с его title...

Код:
$var = WinList()
For $i = 1 to $var[0][0]
  If StringRegExp($var[$i][0], "(Mozilla Firefox)") Then
    MsgBox(0,"", $var[$i][0])
  EndIf
Next
 

VladUs

Скриптер
Сообщения
621
Репутация
182
Или так по имени процесса

Код:
#Include <WinAPIEx.au3>

$sProg = "Notepad.Exe"
$sTitl = _WinGetForProc ($sProg)
MsgBox(64,"Заголовок окна процесса " & $sProg ,$sTitl)

Func _WinGetForProc ($sProcName)
$alist = ProcessList($sProcName)
For $i = 1 to $alist[0][0]
  $iProcPid = $alist[$i][1]
Next
$aData = _WinAPI_EnumProcessWindows($iProcPid, 1) 
$iWin = $aData [1][0]
$sTitle = WinGetTitle( $iWin )
Return $sTitle
EndFunc
 

Alonwoolf_

Новичок
Сообщения
4
Репутация
0
У меня вопрос обраьный: есть 2 окна с одинаковыми заголовками, но разные процессы, надо определить какой из них какой. окна скрыты, show/hide показывает только 1-е окно
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Функция _Win2Process() позволяет узнать название процесса по заголовку окна:
Код:
func _Win2Process($wintitle)
    if isstring($wintitle) = 0 then return -1
    $wproc = WinGetProcess($wintitle)
    return _ProcessName($wproc)
endfunc

func _ProcessName($pid)
    if isstring($pid) then $pid = processexists($pid)
    if not isnumber($pid) then return -1
    $proc = ProcessList()
    for $p = 1 to $proc[0][0]
        if $proc[$p][1] = $pid then return $proc[$p][0]
    Next
    return -1
EndFunc


Функция _Process2Win() позволяет узнать название окна по его процессу:
Код:
func _Process2Win($pid)
    if isstring($pid) then $pid = processexists($pid)
    if $pid = 0 then return -1
    $list = WinList()
    for $i = 1 to $list[0][0]
        if $list[$i][0] <> "" AND BitAnd(WinGetState($list[$i][1]),2) then
            $wpid = WinGetProcess($list[$i][0])
            if $wpid = $pid then return $list[$i][0]
        EndIf
    next
    return -1
endfunc
 
Верх