1

Тема: AHK: Чтение из лога и вывод сообщения

Здравствуйте.
Нужен скрипт, который будет сканировать chatlog.txt, и при нахождении определенного запроса ("Ты продал") из строки ([10:48:29] Ты продал) отображал на 2 мониторе данное время ([10.48.29]). Причем чтобы искал в файле только последнюю строку с этим запросом

2

Re: AHK: Чтение из лога и вывод сообщения

Прочитать файл в переменную можно с помощью команды FileRead, читать построчно — Loop Read.
Найти подстроку в строке — InStr, взять из строки подстроку — SubStr.
«Отобразить» — MsgBox, ToolTip, TrayTip, SplashTextOn.

3 (изменено: serzh82saratov, 2013-05-21 12:13:42)

Re: AHK: Чтение из лога и вывод сообщения

Попробуйте так:


Global sFont := 26 , GuiColor := 0xFF8C00 , sPos := 1  
LogFile = %A_Desktop%\chatlog.txt 

Loop {
    FileRead, Log, *t %LogFile%   
    If RegExMatch(Log, "S).*(\[\d+:\d+:\d+]) Ты продал(\R|$)", Match, sPos)
        Message(RegExReplace(Match1, ":", "."))
    sPos := StrLen(Log), (sPos = 0) ? sPos := 1 
    Sleep 150
}

Message(Message) { 
    SysGet, Mon2, Monitor, 2 
    (Mon2Left = "") ? Mon2Left := Mon2Top := 0
    Gui, Destroy 
    Gui, +AlwaysOnTop -Border +ToolWindow  
    Gui, Color, %GuiColor%
    Gui, Font, s%sFont% cWhite bold italic, Times New Roman
    Gui, Add, Text, Center, %Message% 
    Gui, Show, % "NA x" Mon2Left+15 " y" Mon2Top+15 
    SetTimer, GuiDestroy, -1500 
    Return
    
    GuiDestroy:
        Gui, Destroy 
        Return
}
Return

Функция Message выводит сообщение на втором или единственном экране.

Универсальный простой пример:


LogFile = %A_Desktop%\chatlog.txt 
Pattern := "S).*(\[\d+:\d+:\d+]) Ты продал(\R|$)" , sPos := 1

Loop {
    FileRead, Log, *t %LogFile%
    If RegExMatch(Log, Pattern, Match, sPos)
    {
        MsgBox Появилась нужная строка в лог файле.`n`nПоследний тэг: %Match1%
    }
    sPos := StrLen(Log), (sPos = 0) ? sPos := 1 
    Sleep 150
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui