Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


пример поиска окна по процессу:
читать дальше »

Код: Выделить весь код
Opt('MustDeclareVars',      1)
Opt('TrayIconDebug',        1)
Opt('TrayIconHide',         0)

Local $iPID, $aWin

$iPID = ProcessExists('notepad.exe')
If NOT ProcessExists('notepad.exe') Then
    $iPID = Run('notepad.exe')
    WinWait('[Class:Notepad]')
EndIf

$aWin = _ProcessGetWindow($iPID)
If NOT @error Then
    MsgBox(64, 'Поиск окна', 'Процесс "notepad.exe"' & @CRLF & @CRLF & @TAB & 'указатель: ' & $aWin[1] & @CRLF & @TAB & 'заголовок: ' & $aWin[0])
Else
    MsgBox(64, 'Поиск окна', 'Ошибка поиска окна')
EndIf

Func _ProcessGetWindow($iPID, $iRet=-1)
    Local $aWinList = WinList()
    Local $aRet[2]

    If IsString($iPID) Then $iPID = ProcessExists($iPID)

    For $i = 1 To UBound($aWinList)-1
        If WinGetProcess($aWinList[$i][1]) = $iPID Then
            $aRet[0] = $aWinList[$i][0] ;Title
            $aRet[1] = $aWinList[$i][1] ;WinHandle

            If $iRet = 0 Then Return $aRet[0]
            If $iRet = 1 Then Return $aRet[1]

            Return $aRet
        EndIf
    Next

    Return SetError(1, 0, $aRet)
EndFunc

смотрю уже было )


можно вообще взять весь список существующих окон и найти среди них нужное.
Подробней опиши какое окно необходимо.

Пример поиска всех окон процесса:
Код: Выделить весь код
Opt('MustDeclareVars',      1)
Opt('TrayIconDebug',        1)
Opt('TrayIconHide',         0)

#include <Array.au3>

Local $iPID, $aWin
Local $sProcessName = 'Skype.exe' ; Имя процесса, окна которого необходимо найти
If NOT ProcessExists($sProcessName) Then Exit MsgBox(48, 'Поиск окна', 'Процесс "' & $sProcessName & '" не запущен')

$aWin = _ProcessGetWindow($sProcessName) ; Поиск всех имеющихся окон
;~ $aWin = _ProcessGetWindow($sProcessName, 1) ; Поиск только отображаемых окон
If NOT @error Then
    _ArrayDisplay($aWin, 'Поиск окон процесса "' & $sProcessName & '"')
Else
    MsgBox(48, 'Поиск окна', 'Окна не найдены')
EndIf

Func _ProcessGetWindow($sProcessName, $fOnlyVisible=0)
    Local   $iPID, $aWinList = WinList()
    Local   $aRet[1][2]
            $aRet[0][0] = 0

    If IsString($sProcessName) Then $iPID = ProcessExists($sProcessName)

    For $i = 1 To UBound($aWinList)-1
        If WinGetProcess($aWinList[$i][1]) = $iPID Then
            If $fOnlyVisible AND NOT BitAnd(WinGetState($aWinList[$i][1]), 2) Then ContinueLoop

            $aRet[0][0] += 1
            ReDim $aRet[$aRet[0][0]+1][2]

            $aRet[$aRet[0][0]][0] = $aWinList[$i][0] ;Title
            $aRet[$aRet[0][0]][1] = $aWinList[$i][1] ;WinHandle
        EndIf
    Next

    If $aRet[0][0] Then Return SetError(0, 0, $aRet)
    Return SetError(1, 0, $aRet)
EndFunc

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Последний раз редактировалось proxy, 17-07-2009 в 21:28.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:08, 17-07-2009 | #7