Что нового

Отлов заголовка Окна.

ZanMax

Тестер
Сообщения
120
Репутация
5
Всем привет.
Давно интересен вопрос как ловить заголовок окна ?
Хочу написать прогу для отлога заголовка окон ИЕ,Опера,МОзила.
КАк возможно получить такую инфу :smile: Сам тестил много способов но ничего.

Примерно так :
Код:
if ProcessExists("IE.EXE") Then
	 FileWriteLine("LOG.txt",ЗАГОЛОВОК)
Хочу наблюдать какой пользователь по каких сайтах лазит.
Понимаю что возможн реализовать на стороне ПРОКСИ сервера.
Но всетаки ...
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 547
Репутация
929
Re: [Script] Отлов заголовка Окна.

WinGetTitle("[active]")
Вернет заголовок текущего активного окна.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 119
Репутация
2 319
Re: [Script] Отлов заголовка Окна.

ZanMax « Создано: Сегодня в 10:08:09 »
Хочу написать прогу для отлога заголовка окон ИЕ,Опера,МОзила
Для этих трёх так примерно:

Код:
$sIE_Title = WinGetTitle("[CLASS:IEFrame;REGEXPTITLE:.*?(Microsoft Internet Explorer|).*?]")
$sOpera_Title = WinGetTitle("[CLASS:OpWindow;REGEXPTITLE:.*?(Opera|).*?]")
$sFF_Title = WinGetTitle("[CLASS:MozillaUIWindowClass;REGEXPTITLE:.*?(Mozilla Firefox|).*?]")

ConsoleWrite($sFF_Title & @CRLF)
 
АТ
Z

ZanMax

Тестер
Сообщения
120
Репутация
5
Спасибо большое то что нужно.
А то по цыклу гонять и писать заголовки всех активных окон как-то напгя да и лог ростет очень быстро.

Теперь вопроси почему Chrome не выдает свой заголовок :

Код:
$sChrome_Title=WinGetTitle("[CLASS:Chrome_WidgetWin_0;REGEXPTITLE:.*?(Google Chrome|).*?]")

MsgBox(0,"",$sChrome_Title);


Спасибо.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 119
Репутация
2 319
АТ
Z

ZanMax

Тестер
Сообщения
120
Репутация
5
=( Chrome продолжает молчать. Не хочет показать заголовок окна.
Просто возвращает пустой MsgBox()
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
Я специально не отвечал в этом топике, надеялся, что кто-нибудь все же ответит на этот вопрос, но...

Google Chrome создает одно или несколько скрытых окон (так делают большинство программ), а функция WinGetTitle() возвращает первое подходящее под заданные условия окно (заголовок) в Z-последовательности. Используй WinList() для поиска всех окон данного класса и затем отсей невидимые. Что-то типо этого:

Код:
$List = WinList('[CLASS:Chrome_WidgetWin_0]')
For $i = 1 To $List[0][0]
    If BitAND(WinGetState($List[$i][1]), 2) Then
        ConsoleWrite('Handle: ' & $List[$i][1] & '   ' & 'Title: ' & $List[$i][0] & @CR)
    EndIf
Next


:smoking:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 119
Репутация
2 319
Да да, я давно как то делал функцию _WinFuncsWrapper():

Код:
$sTitle = _WinFuncsWrapper("WinGetTitle", "[CLASS:Chrome_WidgetWin_0]")
ConsoleWrite($sTitle & @CRLF)

Func _WinFuncsWrapper($sFuncName, $sTitle, $sText="", $iOnlyVisible=1, $vParam1=0, $vParam2=0, $vParam3=0, $vParam4=0, $vParam5=0)
	If $iOnlyVisible = 1 Then
		If $sText <> "" Then
			$aWinList = WinList($sTitle, $sText)
		Else
			$aWinList = WinList($sTitle)
		EndIf
		
		For $i = 1 To $aWinList[0][0]
			If BitAND(WinGetState($aWinList[$i][1]), 2) = 2 Then
				$sTitle = $aWinList[$i][1]
				ExitLoop
			EndIf
		Next
	EndIf
	
	Switch $sFuncName
		Case "WinActivate"
			Return WinActivate($sTitle, $sText)
		Case "WinActive"
			Return WinActive($sTitle, $sText)
		Case "WinClose"
			Return WinClose($sTitle, $sText)
		Case "WinExists"
			Return WinExists($sTitle, $sText)
		Case "WinFlash"
			Return WinFlash($sTitle, $sText)
		Case "WinGetClassList"
			Return WinGetClassList($sTitle, $sText)
		Case "WinGetClientSize"
			Return WinGetClientSize($sTitle, $sText)
		Case "WinGetHandle"
			Return WinGetHandle($sTitle, $sText)
		Case "WinGetPos"
			Return WinGetPos($sTitle, $sText)
		Case "WinGetProcess"
			Return WinGetProcess($sTitle, $sText)
		Case "WinGetState"
			Return WinGetState($sTitle, $sText)
		Case "WinGetText"
			Return WinGetText($sTitle, $sText)
		Case "WinGetTitle"
			Return WinGetTitle($sTitle, $sText)
		Case "WinKill"
			Return WinKill($sTitle, $sText)
		Case "WinList"
			Return WinList($sTitle, $sText)
		Case "WinMove"
			Return WinMove($sTitle, $sText, $vParam1, $vParam2, $vParam3, $vParam4, $vParam5)
		Case "WinSetOnTop"
			Return WinSetOnTop($sTitle, $sText, $vParam1)
		Case "WinSetState"
			Return WinSetState($sTitle, $sText, $vParam1)
		Case "WinSetTitle"
			Return WinSetTitle($sTitle, $sText, $vParam1)
		Case "WinSetTrans"
			Return WinSetTrans($sTitle, $sText, $vParam1)
		Case "WinWait"
			Return WinWait($sTitle, $sText, $vParam1)
		Case "WinWaitActive"
			Return WinWaitActive($sTitle, $sText, $vParam1)
		Case "WinWaitClose"
			Return WinWaitClose($sTitle, $sText, $vParam1)
		Case "WinWaitNotActive"
			Return WinWaitNotActive($sTitle, $sText, $vParam1)
	EndSwitch
	
	Return SetError(1, 0, -1)
EndFunc
 

bistriy

Чайник
Сообщения
22
Репутация
0
Re: Отлов заголовка Окна

Почему вы все не правильно пишите : [CLASS:Chrome_WidgetWin_0].
Надо ведь так писать везде : [CLASS:Chrome_WidgetWin_1]
Работает только так.
Код:
$sTitle = _WinFuncsWrapper("WinGetTitle", "[CLASS:Chrome_WidgetWin_1]")
ConsoleWrite($sTitle & @CRLF)
 
Func _WinFuncsWrapper($sFuncName, $sTitle, $sText="", $iOnlyVisible=1, $vParam1=0, $vParam2=0, $vParam3=0, $vParam4=0, $vParam5=0)
    If $iOnlyVisible = 1 Then
        If $sText <> "" Then
            $aWinList = WinList($sTitle, $sText)
        Else
            $aWinList = WinList($sTitle)
        EndIf
       
        For $i = 1 To $aWinList[0][0]
            If BitAND(WinGetState($aWinList[$i][1]), 2) = 2 Then
                $sTitle = $aWinList[$i][1]
                ExitLoop
            EndIf
        Next
    EndIf
   
    Switch $sFuncName
        Case "WinActivate"
            Return WinActivate($sTitle, $sText)
        Case "WinActive"
            Return WinActive($sTitle, $sText)
        Case "WinClose"
            Return WinClose($sTitle, $sText)
        Case "WinExists"
            Return WinExists($sTitle, $sText)
        Case "WinFlash"
            Return WinFlash($sTitle, $sText)
        Case "WinGetClassList"
            Return WinGetClassList($sTitle, $sText)
        Case "WinGetClientSize"
            Return WinGetClientSize($sTitle, $sText)
        Case "WinGetHandle"
            Return WinGetHandle($sTitle, $sText)
        Case "WinGetPos"
            Return WinGetPos($sTitle, $sText)
        Case "WinGetProcess"
            Return WinGetProcess($sTitle, $sText)
        Case "WinGetState"
            Return WinGetState($sTitle, $sText)
        Case "WinGetText"
            Return WinGetText($sTitle, $sText)
        Case "WinGetTitle"
            Return WinGetTitle($sTitle, $sText)
        Case "WinKill"
            Return WinKill($sTitle, $sText)
        Case "WinList"
            Return WinList($sTitle, $sText)
        Case "WinMove"
            Return WinMove($sTitle, $sText, $vParam1, $vParam2, $vParam3, $vParam4, $vParam5)
        Case "WinSetOnTop"
            Return WinSetOnTop($sTitle, $sText, $vParam1)
        Case "WinSetState"
            Return WinSetState($sTitle, $sText, $vParam1)
        Case "WinSetTitle"
            Return WinSetTitle($sTitle, $sText, $vParam1)
        Case "WinSetTrans"
            Return WinSetTrans($sTitle, $sText, $vParam1)
        Case "WinWait"
            Return WinWait($sTitle, $sText, $vParam1)
        Case "WinWaitActive"
            Return WinWaitActive($sTitle, $sText, $vParam1)
        Case "WinWaitClose"
            Return WinWaitClose($sTitle, $sText, $vParam1)
        Case "WinWaitNotActive"
            Return WinWaitNotActive($sTitle, $sText, $vParam1)
    EndSwitch
   
    Return SetError(1, 0, -1)
EndFunc
 
Верх