Что нового

Получение заголовка по PID

The Dream

Новичок
Сообщения
393
Репутация
3
Есть программа - как мне получить скриптом autoit заголовок ее? к примеру через команду Run() (а именно - PID). То есть я имею ввиду в другом скрипте.

код самой программы:

Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=4
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ie.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <Encoding.au3>
#include <GuiEdit.au3>
#include <File.au3>
#include <GDIPlus.au3>
#include <GUICtrlHyperLink.au3>
#include <ScreenCapture.au3>
#include <WinAPIEx.au3>
#include <APIConstants.au3>

Opt("GUIResizeMode", $GUI_DOCKALL)

_IEErrorHandlerRegister()

Global $iDeskHeight = @DesktopHeight -100; высота
Global $iDeskWidth = @DesktopWidth-100; ширина

Global $hGui = GUICreate("RUBIK", $iDeskWidth, $iDeskHeight, 50,20, $WS_SIZEBOX + $WS_SYSMENU)
Global $oIE = _IECreateEmbedded()
Global $iIE = GUICtrlCreateObj($oIE,0,0,$iDeskWidth, $iDeskHeight-32)
Global $DATA, $sUrlLast
$iProgress = GUICtrlCreateProgress(0, $iDeskHeight-32, $iDeskWidth-2, 12)
GUICtrlSetResizing($iProgress, $GUI_DOCKWIDTH + $GUI_DOCKHEIGHT)
GUICtrlSetResizing($iIE, $GUI_DOCKBORDERS)

ObjEvent($oIE, 'IEEvent_', 'DWebBrowserEvents2')

GUISetState(@SW_SHOW, $hGui)


While 1

   $sUrl = _IEPropertyGet($oIE, 'locationurl')
   if $sUrl <> $sUrlLast Then
   WinSetTitle($hGui, '', $sUrl)
   $sUrlLast = $sUrl
   EndIf

    Sleep(100)
WEnd


Func IEEvent_ProgressChange($i_Progress, $i_ProgressMax)
    If $i_ProgressMax <= 0 Then Return
    $iPercent = ($i_Progress * 100) / $i_ProgressMax
    GUICtrlSetData($iProgress, $iPercent)
    If $iPercent >= 100 Then GUICtrlSetData($iProgress, 0)

EndFunc   ;==>IEEvent_ProgressChange


Заранее спасибо.
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
#include <winapiex.au3>
#include 'array.au3'
$arr=_WinAPI_EnumProcessWindows(WinGetProcess('[class:Progman]'))
_ArrayDisplay($arr)
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
как мне получить скриптом autoit заголовок ее?
Можно через ее процесс, с помощью функции:
Код:
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


P.S.Зачем если заголовок уже известен - "RUBIK"
 
Автор
T

The Dream

Новичок
Сообщения
393
Репутация
3
Подскажите пожалуйста, почему не может работать конструкция WinWait(Run('browser.exe')) - ?

browser.exe - это программа, код которой приведен в первом примере
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Было бы удивительно, еслиб такое сработало. Читать умеешь?
Код:
winwait
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
The Dream

Может потому что

Код:
ProcessWait(Run('Notepad.exe'))


ну и ещё один велосипед

Код:
MsgBox(0, '', GetTitleFromPID(ProcessWait(Run('Notepad.exe'))))

Func GetTitleFromPID($i_Pid)
	Local $i, $a_list = Winlist()
	If ProcessExists($i_Pid) Then
        For $i = 1 To $a_list[0][0]
		    If (WinGetProcess($a_list[$i][1]) = $i_Pid) Then
			    Return $a_list[$i][0]
		    EndIf
	    Next
	EndIf
	Return 0
EndFunc
 
Верх