Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.
  • Форумы
  •  » Firefox
  •  » Firefox ломается при использовании taskkill

№116-01-2018 12:10:49

catapulta
Участник
 
Группа: Members
Зарегистрирован: 16-01-2018
Сообщений: 11
UA: Chrome 57.0

Firefox ломается при использовании taskkill

Здравствуйте.
Есть задача из питоновского скрипта запустить firefox, получить из js-скрипта результат, закрыть и так предположительно бесконечное число раз по таймеру
Но браузер ломается ровно на 5 раз, иногда на 2. Говорит что firefox закрылся при запуске, предлагается запустить в безопасном режиме или очистить.
При запуске в безопасном режиме достаточно просто закрыть браузер, чтобы все наладилось, но это действие требует присутствия пользователя, а нам нужен автоматический процесс.
Версия Firefox 52.
Что пробовали:
1. отключить в настройках запуск старой сессии
2. выбрать питоновскую функцию по закрытию (kill, terminate): она без флага /f (без принудительного завершения) не нужна
3. обратится к винапи, хандл окна питон находит правильно, сообщения WM_CLOSE, WM_DESTOY, WM_QUIT, WM_NCDESTOY отправляет, но они не выполняются
4
C:\WINDOWS\system32\cmd.exe /c

taskkill

.exe /f /t /im firefox.exe &cls &start firefox
найденную здесь команду пробовали, чередуя ее с тасккилом (поскольку браузер следует закрыть после выполнения задачи) получили тоже самое, firefox на 5 раз отказалась запустится

Вопрос: можно ли что-то настроить в самом браузере? Волшебный ключ, который позволит firefox не тащить из прошлой жизни что-то мешающее?
Заранее спасибо

Отсутствует

 

№216-01-2018 13:56:09

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

Re: Firefox ломается при использовании taskkill

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


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3

Отсутствует

 

№316-01-2018 14:31:24

catapulta
Участник
 
Группа: Members
Зарегистрирован: 16-01-2018
Сообщений: 11
UA: Chrome 57.0

Re: Firefox ломается при использовании taskkill

Перед запуском стоит 10 секунд, перед закрытием стоит 4 секунды. Перезапускаю вручную, тоже пару секунд добавляет. Этого мало? Нужно около минуты?
ФФ закрывается тасккилом с ключами /F /T /IM (или /PID вместо /IM, и так и так пробовали).
Вкладки в браузере из js-кода можно закрыть, только если они были открыты другим окном.

Отсутствует

 

№416-01-2018 14:56:23

Журавлёва
Участник
 
Группа: Members
Зарегистрирован: 10-07-2016
Сообщений: 129
UA: Chrome 63.0

Re: Firefox ломается при использовании taskkill

Если Фаерфокс закрывать посредством убийства процесса, то он ничего не может никуда ничего сохранить, и он считает это аварийным завершением и начинает при запуске предлагать решения несуществующих проблем.
То есть, закрывать надо через АПИ, длят того, чтобы он понял, что его закрыли крестиком правого верхнего угла, тогда его завершение будет штатное и он не будет ничего предлагать.
ЗЫ
Найдите окно и пошлите ему сочетании АЛТ+Ф4, тогда фаер завершится штатно, проверено сейчас..

Отредактировано Журавлёва (16-01-2018 15:01:08)

Отсутствует

 

№516-01-2018 18:45:53

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 495
UA: Firefox 45.0

Re: Firefox ломается при использовании taskkill

catapulta пишет

C:\WINDOWS\system32\cmd.exe /c taskkill.exe /f /t /im firefox.exe &cls &start firefox

бгг, ты чего? этож тупо убивает процесс. Журавлёва все прально скзаала, тебе нужно не убивать , а закрыть нормально. Нечто типа такого №11479 , тут блокнот закрываеццо из VBcript . Что-то такое и нужно тебе сваять на питоне  отставить, плохой пример.

Отредактировано mokujin (16-01-2018 18:49:37)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№616-01-2018 19:58:13

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 495
UA: Firefox 45.0

Re: Firefox ломается при использовании taskkill

Если это поможет.
Есть такая чудная программка, консольная как положено, которая умеет то что нужно: закрыть окна по имени процесса. Ей 100летвобед но она шикарна: просто делаем pv -c firefox.exe и окно нормально закроется.
попробуй. описание PV.EXE саму прогу могу залить, если нужна и не найдешь(там 72kB всего).


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№716-01-2018 21:18:12

Журавлёва
Участник
 
Группа: Members
Зарегистрирован: 10-07-2016
Сообщений: 129
UA: Chrome 63.0

Re: Firefox ломается при использовании taskkill

mokujin пишет

Если это поможет.Есть такая чудная программка, консольная как положено, которая умеет то что нужно: закрыть окна по имени процесса. Ей 100летвобед но она шикарна: просто делаем pv -c firefox.exe  и окно нормально закроется.попробуй. описание PV.EXE саму прогу могу залить, если нужна и не найдешь(там 72kB всего).

"Программки" нужно писать самостоятельно, тогда они будут работать по своему сценарию, а не подгонять чужой сценарий под свои задачи.
То есть, если вы "программкой" начнёте завершать фаерфокс по имени процесса, то опять наступите на грабли, ибо, выше уже сказано.
А если в процессах будет два фаерфокса или больше, тогда чего? Изучать поведение чужой "программки" и тратить на это нервы?
Более того, завершать надо не по хендлу процесса, а по имени и хендлу окна, тогда фаер будет закрываться штатно, и не потребует галиматью при своём следующем открытии.
Тут всего несколько строчек кодить, просто начальный уровень.

Отсутствует

 

№816-01-2018 21:31:53

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 495
UA: Firefox 45.0

Re: Firefox ломается при использовании taskkill

pv.exe посылает WM_CLOSE окну(-ам) сам находя его по имени процесса, так шо незвизди.

Журавлёва пишет

А если в процессах будет два фаерфокса или больше, тогда чего?

в скрипте поочереди через for или foreach с таймаутом и должно быть все норм.

Журавлёва пишет

Тут всего несколько строчек кодить, просто начальный уровень.

тытышо!? ану-ка, ну-ка. я до сих пор так и не нашел нормального скрипта(VB, PS, cmd ) чтоб закрывать нормально(не убивать) программы в винде. Про проги в трее тем более, их даже эта программка не берет, окон то у них нету.


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№916-01-2018 22:03:38

Журавлёва
Участник
 
Группа: Members
Зарегистрирован: 10-07-2016
Сообщений: 129
UA: Chrome 63.0

Re: Firefox ломается при использовании taskkill

mokujin, какие скрипты? О чём вы....
Вы, что, ВинАпи скриптами применяете, что-ли?
А насчёт WM_CLOSE вам выше написали, что не всегда это работает.
Там другой мессадж нужен, но, я здесь не собираюсь вести уроки программирования, я могу только сказать, в какую сторону копать и где ошибка.
То есть, чтобы отловить название окна и его хендл это нужно пару строчек кода, и ещё одна строчка, чтоб его закрыть.
Имеется ввиду компилляция экзешника, а не примитивные скрипты, функционал которых ограничен.

Отредактировано Журавлёва (16-01-2018 22:04:00)

Отсутствует

 

№1016-01-2018 22:32:56

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 495
UA: Firefox 45.0

Re: Firefox ломается при использовании taskkill

Я про скрпиты, да. А ты про што, каким боком сюда "компилляция экзешника"... в тему про питон, js и cmd :lol:

Журавлёва пишет

А насчёт WM_CLOSE вам выше написали, что не всегда это работает.

В данном случае кокраз работает и отлично. Закрыватся бравзер точно так же как и по кнопке Выход. что и нужно.

Ежли ты такой спец по С\++, давай накидай "пару строчек" в экзешнег , который бы принимал в параметрах(или списке или др. способом) имена процессов(или путя к програмам или... ) и закрывал бы их корректно. Никаких извратов, обычные виндовые окна такие как : totalcommander, firefox, chrome, mediaplayerClassic и др. . Всякие со скинами или др. сложные случаи не нужны. Это былоб отлично ибо за все время поисков ничего подобного до сих пор нету.
теоретики булевы...


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№1116-01-2018 22:40:36

Журавлёва
Участник
 
Группа: Members
Зарегистрирован: 10-07-2016
Сообщений: 129
UA: Chrome 63.0

Re: Firefox ломается при использовании taskkill

mokujin пишет

В данном случае кокраз работает и отлично. Закрыватся бравзер точно так же как и по кнопке Выход. что и нужно.

Если "работает отлично", пусть топикстартер напишет слово "РЕШЕНО" в заглавии топика.

Отредактировано Журавлёва (16-01-2018 22:42:47)

Отсутствует

 

№1217-01-2018 07:29:21

catapulta
Участник
 
Группа: Members
Зарегистрирован: 16-01-2018
Сообщений: 11
UA: Chrome 57.0

Re: Firefox ломается при использовании taskkill

Спасибо за ответы.
Действительно, сейчас пишем программу на с++.

Выделить код

Код:

#include "Windows.h"
int main(int argc, char ** argv)
{
    HWND h = FindWindowW(L"MozillaWindowClass",L"Mozilla Firefox");
    SendMessage(h, WM_CLOSE, 0, 0);
    return 0;
}

Чтобы посмотреть какие окна открыты использую winspy. Для каждого окна есть имя и класс, для фф класс MozillaWindowClass, а имя - это имя активной вкладки и название браузера через дефис: "NamePage - Mozilla Firefox", либо "Mozilla Firefox", если вкладка пустая. Все замечательно, если я знаю имя вкладки, но как закрыть браузер перед запуском программы? Если оставить вторым параметром NULL, то работает только если вкладка одна и пустая
Склоняемся к мнению, что закрывать первый раз тасккилом либо выдвигать требование закрыть браузер перед использованием.
Но если есть какие тонкости в именовании окон, будем благодарны за совет или за ссылки.
Также остается открытым вопрос: почему из питона винапи не вызывается? Хендл окна находит верно, но закрыть не может даже блокнот. Использовалась библиотека ctypes. Ну это надо на питон форумах вопрос задавать наверное.
Если что-нибудь еще найду по теме, отпишусь в течении недели двух.

Добавлено 17-01-2018 07:41:36

mokujin пишет

Если это поможет.
Есть такая чудная программка, консольная как положено, которая умеет то что нужно: закрыть окна по имени процесса. Ей 100летвобед но она шикарна: просто делаем pv -c firefox.exe и окно нормально закроется.
попробуй. описание PV.EXE саму прогу могу залить, если нужна и не найдешь(там 72kB всего).

Спасибо, рассмотрим

Отредактировано catapulta (17-01-2018 07:51:47)

Отсутствует

 

№1317-01-2018 08:36:23

catapulta
Участник
 
Группа: Members
Зарегистрирован: 16-01-2018
Сообщений: 11
UA: Chrome 57.0

Re: Firefox ломается при использовании taskkill

Выделить код

Код:

#include "Windows.h"
int main(int argc, char ** argv)
{
    if (argc == 3)
        SendMessage(FindWindowA(argv[1], argv[2]), WM_CLOSE, 0, 0);
    return 0;
}

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

Выделить код

Код:

subprocess.Popen('closeBrowser.exe "MozillaWindowClass" "LaunchPage - Mozilla Firefox"')

Отсутствует

 

№1417-01-2018 09:46:56

Журавлёва
Участник
 
Группа: Members
Зарегистрирован: 10-07-2016
Сообщений: 129
UA: Chrome 63.0

Re: Firefox ломается при использовании taskkill

catapulta пишет

Действительно, сейчас пишем программу на с++. ...почему из питона винапи не вызывается? Хендл окна находит верно, но закрыть не может даже блокнот.

Питон не закрывает, потому что, это питон.
Как сказал один футболист, "если бы у меня были точные пасы, я бы играл в Манчестер Юнайтед".
Также и питон, если бы он что-то мог безупречно, то, все бы кодили на нём.
Теперь к делу...
Не надо закрывать фаер никакими сторонними тассккилами, а надо отлавливать окно, в названии которого есть буквы firefox, то есть, название может быть любой длины строки, но в строке искать буквы firefox.
Такое окно делать активным поверх всех и посылать ему горячие клавиши АЛТ+Ф4.
Тогда фаер закроется штатно, можете проверить сейчас вручную.
После этого, ждать когда в процессах исчезнет плагин-контейнер, который имеет обыкновение там продолжать болтаться, всё это смотреть по месту, ибо, фаерфоксфы разные и невозможно сказать, чего там намутили на этот раз.

Отсутствует

 

№1517-01-2018 14:02:51

catapulta
Участник
 
Группа: Members
Зарегистрирован: 16-01-2018
Сообщений: 11
UA: Chrome 57.0

Re: Firefox ломается при использовании taskkill

Перебрать окна средствами винапи - это, наверное, можно.
А как сделать вкладку активной? в винспай я вижу только одно окно с активной вкладкой, как добраться до другой вкладки и сделать активной ее? Это нужно браузерское апи. А такого нет наверное
Мне повторюсь нужно только программное решение, не ручное.
Если речь идет о моей странице, то я знаю ее имя и я ее закрою, а если о вкладках уже открытых на начало программы, то в принципе программа запускает новое окно и мне это на руку, что предыдущее окно с сотней вкладок не закрылась. Я закрываю активную вкладку и с ней закрывается окно. Что там в процессах висит - ну и пусть висит. Будет проблема будем решать.

Добавлено 17-01-2018 14:21:29
А не я не так поняла. Я нашла свое окно с вкладкой и без проблем его закрыла без того, чтобы сделать активным. У меня проблема не потерять эту вкладку, поскольку только по ней я могу найти окно, а она теоретически может смениться, окно назовется по-другому и я его не найду. Ну вообще да можно просто перебрать все окна и не бояться потерять.

Отредактировано catapulta (17-01-2018 14:21:29)

Отсутствует

 

№1617-01-2018 14:34:12

Журавлёва
Участник
 
Группа: Members
Зарегистрирован: 10-07-2016
Сообщений: 129
UA: Chrome 63.0

Re: Firefox ломается при использовании taskkill

catapulta, при любом названии вкладки, при любом, в строке присутствует буквы Mozilla Firerfox.
Перебирать окна  GetWindowText на предмет наличия в строке названия букв Mozilla Firerfox и получать хендл окна.
Делать окно это активным ShowWindow и закрывать как уже сказано.

Отсутствует

 

№1717-01-2018 14:38:01

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

Re: Firefox ломается при использовании taskkill

рекомендую любителям гамаков и лыж  почитать справку тасккилла  и немного применить мозгов.
там можно искать и по названию окна и завершать не принудительно (т.е. послать процессу сигнал который он отработает и корректно закроется)
вопрос про закрытие нескольких вкладок элементарно отключается в конфиге
для закрытия фф вкладки переключения на вкладку скрипту нужны лишь права расширения
если скрипт исполняется на страничке то можно сделать изменение какого либо элемента в конце а скрипт самого фф (тот что с достаточными правами просто отслеживает его)


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3

Отсутствует

 

№1817-01-2018 14:46:40

catapulta
Участник
 
Группа: Members
Зарегистрирован: 16-01-2018
Сообщений: 11
UA: Chrome 57.0

Re: Firefox ломается при использовании taskkill

Журавлёва пишет

catapulta, при любом названии вкладки, при любом, в строке присутствует буквы Mozilla Firerfox.
Перебирать окна  GetWindowText на предмет наличия в строке названия букв Mozilla Firerfox и получать хендл окна.
Делать окно это активным ShowWindow и закрывать как уже сказано.

а зачем делать активным? он и так понимает по хендлу.
"Mozilla Firerfox"присутствует также и в том окне, в котором куча нужных вкладок. Я могу закрыть это окно и не закрыть то, которое нужно закрыть. Поэтому нужно знать полное название активной вкладки и я его знаю, поскольку сама же ее и запустила. Если только пользователь не переключит. Ну если переключит то пусть сам закрывает раз такой умный

Отсутствует

 

№1918-01-2018 13:05:56

catapulta
Участник
 
Группа: Members
Зарегистрирован: 16-01-2018
Сообщений: 11
UA: Chrome 57.0

Re: Firefox ломается при использовании taskkill

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

Выделить код

Код:

windll.user32.SendMessageW(3278334,16,0,0)
windll.user32.SendMessageW(3278334,'WM_CLOSE',0,0) #не работает

Надо было число отправлять, а не строку.

Отредактировано catapulta (18-01-2018 13:31:10)

Отсутствует

 
  • Форумы
  •  » Firefox
  •  » Firefox ломается при использовании taskkill

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]