1 (изменено: khaker, 2013-01-11 06:38:09)

Тема: AHK: Вопрос по одному из параметров команды Process.

Здравствуйте!
В такое позднее время суток дописываю скрипт.
И столкнулся с одним нюансом, который не знаю как решить.
А именно, есть у меня команда Process, которая "ловит" имя процесса и назначает ему PID.

Process, wait, skype.exe
NewPID = %ErrorLevel%

Только такое решение не будет функционировать, если исполняемый файл (в данном случае skype.exe) переименовать.
Как можно указать параметру искать не 1 в 1 процесс skype.exe, а все процессы, которые имеют в своём названии этот набор букв "skype".
Т.е., что бы можно было найти такие процессы, как PortableSkype.exe, ProgramSkype.exe и т.д.
Пробовал прописывать так:


Process, wait, ~skype~.exe

Но тогда вовсе не находит процесс skype.exe и модификации его имени.

Думаю, может нужно отказаться вовсе от команды Process и ждать эту программу по команде WinWait?
Или есть другие способы решения подобной ситуации?

И еще один вопрос. Хочу использовать директиву #NoTrayIcon.
Но очень нужно потом просматривать логи, которые видны при нажатии ПКМ на иконку скрипта -> Open.
Как заставить скрипт самостоятельно вести лог в текстовый файл?
Ведь это можно реализовать командой FileAppend? Тогда что нужно вписать в параметр Текст, что бы сохранял лог вышеприведённого окна информации деятельности скрипта?

Ps. Спасибо за внимание! Жду Вашего ответа.

Я не Мастер, я только учусь...

2

Re: AHK: Вопрос по одному из параметров команды Process.

khaker, ознакомься с этой и с этой темами, отредактируй свой пост и заголовок.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Вопрос по одному из параметров команды Process.

В конце справки по Process есть пример получения списка процессов. Видимо, его нужно использовать и искать в имени каждого процесса нужное сочетание букв.

Лог, наверно, можно из окна скрипта считывать и писать в файл. Выводится он в контрол Edit, так что ControlGetText должна рулить. А если просто посмотреть нужно время от времени, то можно назначить на горячую клавишу команду ListLines.

4

Re: AHK: Вопрос по одному из параметров команды Process.

искать [...] все процессы, которые имеют в своём названии этот набор букв "skype".


ProcessWaitExist("skype")

ProcessExist(ByRef processName) {
    for process in ComObjGet("winmgmts:").ExecQuery("Select ProcessId from Win32_Process WHERE Name LIKE '%" . processName . "%'")
        return process.ProcessId
}

ProcessWaitExist(processName, waitDuration := "") {
    (waitDuration := waitDuration * 1000) && startTime := A_TickCount

    loop {
        if pid := ProcessExist(processName)
            return pid

        if !waitDuration || waitDuration - (A_TickCount - startTime) > 50
            Sleep 100
        else return false
    }
}