Страница 31 из 243

Добавлено: Чт ноя 10, 2011 10:04
MVV
Плагин написать надо, чтобы позволял делать проверку на запущенность процесса. В ShellExec такой функции действительно не место.

Добавлено: Чт ноя 10, 2011 22:56
Flasher
MVV писал(а):Плагин написать надо, чтобы позволял делать проверку на запущенность процесса. В ShellExec такой функции действительно не место.
Если не место, то как этот плагин будет взаимодейтсвовать с ShellExec, с помощью которого запускается программа/скрипт?

Добавлено: Пт ноя 11, 2011 09:29
Loopback
Flasher писал(а):Если не место, то как этот плагин будет взаимодейтсвовать с ShellExec, с помощью которого запускается программа/скрипт?
Стандартная конструкция, что-нибудь типа "If ProcessExists() Then" (собственно, как и написал LonerD). Т.е. проверяется наличие процесса, и если его нет - выполняется запуск.

Добавлено: Пт ноя 11, 2011 10:36
Flasher
А что писать в ProcessExists? PID мы не знаем. Знаем путь к файлу, имя, класс. А нам не во всех случаях нужно, допустим, учитывать процессы копий. Как тут? И если это скрипт, работающий через постредника, то как и что указывать?
Если указывать путь, то нужно бы сделать так, чтобы не делать это дважды, т.е. в обеих командах ProcessExists/ShellExec. Хотя указывать путь - это не решение для копий TC.

Добавлено: Пт ноя 11, 2011 12:50
Loopback
Flasher писал(а):А что писать в ProcessExists?
Имя процесса.
Flasher писал(а):А нам не во всех случаях нужно, допустим, учитывать процессы копий.
Не понял.
Flasher писал(а):Если указывать путь, то нужно бы сделать так, чтобы не делать это дважды, т.е. в обеих командах ProcessExists/ShellExec.
Не вижу тут ничего ужасного. Нормальная практика для скриптинга. Если что - есть переменные.

Добавлено: Пт ноя 11, 2011 20:24
Flasher
Loopback писал(а):Не понял.
У нас запущено некое приложение, вызываемое по ShellExec. Нам нужно, чтобы копии программ запускались только тогда, когда не запущено ни одной копии TC. Т.е. если другая копия TC уже запущена, то копию программы открывать надо.
Loopback писал(а):Если что - есть переменные.
Точно.

По скриптам не ответил.

Добавлено: Пт ноя 11, 2011 20:42
MVV
Flasher писал(а):
Loopback писал(а):Не понял.
У нас запущено некое приложение, вызываемое по ShellExec. Нам нужно, чтобы копии программ запускались всегда кроме случаев, когда не запущено не одной копии TC. Т.е. если другая копия TC уже запущена, то копию программы открывать надо.
То есть, для первого запущенного тотала программу запускать не надо? А для второго, третьего, десятого и т.п. - надо? :roll:

Если надо учитывать число процессов с таким именем, функция плагина вполне может возвращать число таких процессов.

Добавлено: Пт ноя 11, 2011 20:54
Flasher
Я вроде ясно написал.
Flasher писал(а):если другая копия TC уже запущена, то копию программы открывать надо
Значит, программа запущена, а Тотал только вот запускается и проверяет не запущена ли уже копия ТС. Если запущена, то запускать копию программы, и наоборот.

Добавлено: Пт ноя 11, 2011 20:55
MVV
Ну я вроде так и написал. Первый тотал программу запускать не будет, т.к. он первый, а второй, третий, десятый - будут.

Добавлено: Пт ноя 11, 2011 20:56
Flasher
MVV
Да, но ты не написал об условии запущенности самой программы.

Добавлено: Пт ноя 11, 2011 20:58
MVV
Это условие можно отделить, оно не влияет на остальное. В предложении, которое начинается с "Нам нужно", оно не фигурирует, поэтому может быть вынесено во внешний условный блок.

Добавлено: Пт ноя 11, 2011 21:02
Flasher
MVV писал(а):В предложении, которое начинается с "Нам нужно", оно не фигурирует
Ну и что? В контексте то фигурирует.
MVV писал(а):может быть вынесено во внешний условный блок
Это понятно, но это не значит, что его не нужно учитывать.

Добавлено: Пт ноя 11, 2011 22:52
LonerD
Я тут встряну в диалог и напомню о своей ошибке с закрыванием Тотала 1.6 беты если в настройках прописан запуск программ ShellExec /TT /W.

Сейчас примерно такой же баг (ошибка при закрытии тотала и шизофреничное поведение мыши при этом) словил в Win7x64 и на предыдущих версиях (1.5, 1.4 последняя бета) в случае если указанный ехе файл не существует.
Строка запуска выглядит так:
ShellExec /TT /W "%commander_path%\Plugins\exe\Program.exe" "" "%commander_path%\Plugins\exe\"
Но самого файла Program.exe не существует.
Тотал крашится. Может, инфа как-то поможет исправить баг.

Добавлено: Пт ноя 11, 2011 23:50
Flasher
LonerD, а зачем задавать рабочую папку, если путь к файлу и так указан?

Добавлено: Сб ноя 12, 2011 14:30
Loopback
LonerD писал(а):Я тут встряну в диалог и напомню о своей ошибке с закрыванием Тотала 1.6 беты если в настройках прописан запуск программ ShellExec /TT /W.
Вовсе необязательно напоминать об этом на каждой странице :) Говорил же - займусь после релиза TCTorrent.

Попробуй эту версию.

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