1

Тема: AHK: Проверка на существование

Суть проблемы: не могу реализовать постоянное наблюдение за существованием файла (а если быть точнее: даже не знаю как).
Есть такая команда, как IfExist, но она работает линейно (проверила и забыла), а мне нужна постоянная проверка. То есть, ожидать пока файл не будет удалён из указанной папки и тогда выдать сообщение (мол, тревога! Вторжение! Invaders MUST die!... и всё такое). Что-то вроде бесконечного цикла проверки.
Я так понял, что за цикл в AHK отвечает команда loop, но из описания я так и не смог понять что значит "Возвращает указанные файлы или папки по одному/одной" и уж тем более "рекурсия в подпапки".
Будте добры, укажите как именно реализуется цикл в АНК и, если описанная мной проблема решается не с помощью цикла, то укажите как именно.

2

Re: AHK: Проверка на существование

filePath := "D:\file.ext"

loop {
    while FileExist(filePath)
        Sleep 300
    MsgBox, 4, Вторжение, Файл %filePath% не существует.`n`nПродолжить?
    IfMsgBox NO
        break
}

3 (изменено: Nox_The_Great, 2013-05-01 17:29:28)

Re: AHK: Проверка на существование

Sleep принципиален? Разве есть команда while?
P.S. Работает. Спасибо!

4 (изменено: creature.ws, 2013-05-01 17:32:51)

Re: AHK: Проверка на существование

Sleep не принципиален и вообще несостоятелен как личность

Проверять наличие файла 3 раза в секунду — более чем достаточно.

Разве есть команда while?

Вы хотите поговорить об этом?

5

Re: AHK: Проверка на существование

Я в принципе люблю разговаривать. Просто while не представленна в списке команд документации, вот у меня и закрались сомнения.

6 (изменено: creature.ws, 2013-05-01 17:48:45)

Re: AHK: Проверка на существование

Представлена: While

Список команд
Актуальная документация

7

Re: AHK: Проверка на существование

Ну а я на русском смотрю
http://www.script-coding.com/AutoHotkey … dList.html

8 (изменено: creature.ws, 2013-05-01 18:03:41)

Re: AHK: Проверка на существование

Run % SubStr(A_AhkPath, 1, -3) "chm",, max, hhPID
WinWait, ahk_pid %hhPID%
SendMessage, 0x1330, 1,, SysTabControl321
ControlFocus, Edit1
SetDefaultMouseSpeed, 80
SetKeyDelay, 50, 10
Blockinput, MouseMove
MouseMove, % A_CaretX, % A_CaretY
Send +{Home}{Del}While{Enter}
Blockinput, MouseMoveOff
ExitApp

Ну а я на русском смотрю

А версия autohotkey у вас, случаем, не 1.0.48.05 ли?

9 (изменено: Nox_The_Great, 2013-05-01 18:03:12)

Re: AHK: Проверка на существование

Таки нет. 1.1.09.02

10

Re: AHK: Проверка на существование

А код, сосбственно, зачем? Я же вроде сказал, что loop прекрасно работает.

11 (изменено: creature.ws, 2013-05-01 18:11:34)

Re: AHK: Проверка на существование

В этом случае правильнее использовать оригинальную справку.
Код — для демонстрации наличия в каталоге autohotkey файла справки, оснащённого индексом, обеспечивающим быстрый и удобный поиск. Считаю подобную демонстрацию уместной в контексте ответа на вопрос «Разве есть команда while?»

12

Re: AHK: Проверка на существование

Тоже верно. Но справка - последнее место куда я смотрю.

13

Re: AHK: Проверка на существование

Разве есть команда while?

А вы думате, что можно просто придумать команду, и она будет работать, или хотя бы без ошибки запустится код?

creature.ws
Отличный скрипт
Напомнило старое, доброе:

Search = While 
Run http://ru.lmgtfy.com/?q=%Search% site:www.autohotkey.com/docs/commands/#
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14

Re: AHK: Проверка на существование

А команда Loop будет работать если я перед этим использовал "process, waitclose" ?

15

Re: AHK: Проверка на существование

Вопрос звучит как «Приводит ли использование команды Process  к неработоспособности команды Loop»? Нет, не приводит.

Вы имеете в виду, может ли цикл выполнятся одновременно с ожиданием завершения процесса? Нет, команды выполняются последовательно.

16

Re: AHK: Проверка на существование

Вы имеете в виду, может ли цикл выполнятся одновременно с ожиданием завершения процесса?

Ну таки да, именно это я и имел. Вот это-то и плохо. Нужно каким-то хитрым способом объеденить эти 2 команды.

17

Re: AHK: Проверка на существование

Нужно каким-то хитрым способом объеденить эти 2 команды.

Пример использования приведите

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

18 (изменено: Nox_The_Great, 2013-05-01 18:59:58)

Re: AHK: Проверка на существование

Зачем? Дальше я сам разберусь. Спасибо за заботу. Скорее всего под Loop загоню проверку на существование процесса и файла.

19

Re: AHK: Проверка на существование

filePath := "D:\file.ext"
processName := "asd.exe"

loop {
    while FileExist(filePath) {
        Process Exist, % processName
        if !ErrorLevel
            break
        Sleep 300
    }
}

20

Re: AHK: Проверка на существование

Не плохо. Но насколько я понял в данном случае сначала идёт проверка на существование файла, а затем проверка процесса (если, конечно, правильно понял). Но мне нужно, чтобы обе проверки происходили независимо.

21

Re: AHK: Проверка на существование

Но мне нужно, чтобы обе проверки происходили независимо

Зачем? Дальше я сам разберусь. Спасибо за заботу. Скорее всего под Loop загоню проверку на существование процесса и файла.

http://xbmc.ru/forum/images/smilies/facepalm.gif

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

22

Re: AHK: Проверка на существование

Да ладно тебе. Я имел в виду, что в Loop проведу проверку и файла и процесса таким образом, что невыполнение одного из пунктов не приведёт к невыполнению другого, т.е. 2 независимые друг от друга проверки.

23

Re: AHK: Проверка на существование

таким образом, что невыполнение одного из пунктов не приведёт к невыполнению другого

Так зачем тебе это нужно? Пример приведи.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

24 (изменено: Nox_The_Great, 2013-05-01 19:24:30)

Re: AHK: Проверка на существование

Как это зачем? For the great Justice конечно же.
Ну допустим файл существует, а процесс нет => запустить процесс.
Файл существует и процесс тоже существует => повторить проверку.
Файл не существует, а процесс - да => создать файл.
Файл не существует, процесс не существует => запустить процесс + создать файл.

25 (изменено: serzh82saratov, 2013-05-01 19:39:37)

Re: AHK: Проверка на существование

Что может быть проще?
Или, чем тебя не устраивают последовательные проверки:


processName := "notepad.exe" 
Path := "C:\Windows\System32\notepad.exe" 

loop 
{
    IfNotExist, %Lnk1% 
        FileCreateShortcut, %Dst1%\123.exe , %Lnk1% 
    process, exist, %processName%
    if errorlevel = 0 
        run %Path%    
 ;   Sleep 1    
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

26

Re: AHK: Проверка на существование

Вот теперь работает. Спасибо!

27

Re: AHK: Проверка на существование

Угу.
Только для того чтоб ты поведал тайну сложнейшего алгоритма желаемого, тебе пришлось несколько раз повторить - что это необходимо.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

28

Re: AHK: Проверка на существование

чем тебя не устраивают последовательные проверки

Всё меня устраивает. Я же сказал, что c loop'ом не знаком и как он работает не знаю. Рано или поздно я бы дошёл и до твоей схемы, просто для этого мне понадобилось бы некоторое время ибо я предпочитаю всё проверять на практике.

29

Re: AHK: Проверка на существование

creature.ws пишет:

Вы имеете в виду, может ли цикл выполнятся одновременно с ожиданием завершения процесса? Нет, команды выполняются последовательно.

Nox_The_Great пишет:

Ну таки да, именно это я и имел.

Потому что ты сам сказал что последовательные проверки тебе неподходят. И потому слово "Или" выделено.

serzh82saratov пишет:

Что может быть проще?
Или, чем тебя не устраивают последовательные проверки:

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

30

Re: AHK: Проверка на существование

off: Ну да, прям таки напомнило последний пункт в разделе "Философия" по ссылке NFAQ

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди