Что нового

Как пристроить запуск скрипта au3 - к ярлыку открытия программы

Пост номер 9 был отмечен как лучший ответ.

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
Здравствуйте. Помогите.

Подскажите, если кто знает.
Как привязать autoit-скрипт к запуску конкретного файла ?
Чтобы сперва открывалась сама программа - по созданному для этого ярлыку, а затем уже привязанный к ней скрипт au3.

Ситуация такая.
Программа открывается - по ярлыку на панели задач - и занимает только одно место на панели задач.
И вот как к этому ярлыку пристроить запуск скрипта ?
Чтобы по-прежнему - было занято только одно место на панели задач, но при этом и скрипт au3 - тоже запускался.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 444
Репутация
2 393
Как привязать autoit-скрипт к запуску конкретного файла ?
Либо следить за открытием данного файла (правда не известно по каким критериям, _WinAPI_FileInUse? или если это программа, то прост проверять её в процессах), либо повесить на ярлык запуск скрипта, а уже этим скриптом запускать то что нужно.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 444
Репутация
2 393
Вот такой скрипт можно поместить в автозапуск, пусть и следит за открытием программы:

Код:
$sProgram = 'calc.exe'

While 1
    If ProcessExists($sProgram) Then
        _Action()
        
        While ProcessExists($sProgram)
            Sleep(10)
        WEnd
    EndIf
    
    Sleep(10)
WEnd

Func _Action()
    MsgBox(64, @ScriptName, 'Script actions')
EndFunc
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
CreatoR, ясно. Спасибо.
А если программ - несколько.
Как сделать, чтобы для калькулятора вылетало одно сообщение, а для калькулятора - другое ?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 444
Репутация
2 393
А если программ - несколько.
Как это несколько, вы же написали:
Программа открывается - по ярлыку на панели задач - и занимает только одно место на панели задач
чтобы для калькулятора вылетало одно сообщение, а для калькулятора - другое ?
Хм, там наверно что то другое должно быть )).
Код:
Global $aProgs[][2] = [['calculator.exe', 0], ['cmd.exe', 0], ['notepad.exe', 0]]

While 1
    For $i = 0 To UBound($aProgs) - 1
        If $aProgs[$i][1] = 0 And ProcessExists($aProgs[$i][0]) Then
            $aProgs[$i][1] = 1
            _Action($aProgs[$i][0])
        ElseIf $aProgs[$i][1] = 1 And Not ProcessExists($aProgs[$i][0]) Then
            $aProgs[$i][1] = 0
        EndIf
    Next
    
    Sleep(10)
WEnd

Func _Action($sProg)
    MsgBox(64, @ScriptName, 'Script actions for: ' & $sProg)
EndFunc
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
CreatoR, ясно.
А сообщения для соответствующих им программ где прописывать ?

Они же разные должны быть для разных программ.
Сейчас в скрипте - только одно сообщение появляется ('Script actions for: ' & $sProg)) и я не могу туда ничего своего написать - для разных процессов.
Сообщение автоматически объединено:

Как же это сделать ?
 
Последнее редактирование:

ra4o

AutoIT Гуру
Сообщения
1 088
Репутация
212
У Вас в переменной "$sProg " и есть название запущенного процесса, для каждой из программ будет отличаться.
 
Автор
R

RipVanWinkel

Новичок
Сообщения
81
Репутация
0
ra4o, так мне не нужно сообщение показывающее, что запущен процесс notepad.exe - я и так знаю как он называется.

Нужно чтобы я мог при случае поменять текст сообщения.
При процессе notepad.exe - Msgbox "Сообщение первое" (текст прописью)
При процессе calc.exe - Msgbox "Сообщение второе" (текст прописью)
 

InnI

AutoIT Гуру
Сообщения
4 402
Репутация
1 192
Код:
Global $aProgs[][] = [['calc.exe', 0, 'This is calc'], ['cmd.exe', 0, 'This is cmd'], ['notepad.exe', 0, 'This is notepad']]

While Sleep(10)
    For $i = 0 To UBound($aProgs) - 1
        If $aProgs[$i][1] = 0 And ProcessExists($aProgs[$i][0]) Then
            $aProgs[$i][1] = 1
            _Action($aProgs[$i][2])
        ElseIf $aProgs[$i][1] = 1 And Not ProcessExists($aProgs[$i][0]) Then
            $aProgs[$i][1] = 0
        EndIf
    Next
WEnd

Func _Action($sProg)
    MsgBox(64, @ScriptName, $sProg)
EndFunc
 

vovsla

Осваивающий
Сообщения
553
Репутация
26
Если цель - "Чтобы по-прежнему - было занято только одно место на панели задач, но при этом и скрипт au3 - тоже запускался. "
Я бы по ярлыку запускал скрипт, а саму программу запускал из скрипта.
 

InnI

AutoIT Гуру
Сообщения
4 402
Репутация
1 192
Верх