Убить процесс конкретного окна 1С

21.02.09

Разработка - Инструментарий разработчика

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

Скачать файлы

Наименование Файл Версия Размер
-
.1225601054 196,60Kb
723
.1225601054 196,60Kb 723 Скачать бесплатно
-
.1234526068 196,63Kb
208
.1234526068 196,63Kb 208 Скачать бесплатно

Принцип работы:
- ищутся все процессы, созданные приложением, содержащим в имени 1CV (т.е. любые версии 1С)
- ищутся все окна найденных процессов и считываются их заголовки
- если заголовок окна совпадает с единственной строчкой ini-файла (Kill1CProcWnd.ini), то убивается этот конкретный процесс
- сама программа закрывается в любом случае (после "убиения", или если условия не совпали)

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122137    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 15300 руб.

06.10.2023    7288    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3531    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177744    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99345    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18109    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28108    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23601    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
0. Abadonna 3958 01.01.70 03:00 Сейчас в теме
Иногда невозможно закрыть окно 1С программно из самой 1С (например, имеются модальные окна типа вопрос и предупреждение). В таких случаях применяется внешняя программа, убивающая процесс по имени создавшего его файла. Но в таком случае будут завершены все процессы (закрыты окна), созданные этим файлом (например, все запущенные базы и конфигураторы). Настоящая программа "убивает" процесс избирательно, по заголовку окна принадлежащего этому процессу

Перейти к публикации

1. Velostrannik 202 02.11.08 22:07 Сейчас в теме
2. Abadonna 3958 03.11.08 04:50 Сейчас в теме
Пример применения для 7.7 с использованием Formex.dll:
Прелесть метода ОбработкаОжидания объекта "Сервис" этой библиотеки заключается в том, что он отрабатывает всегда, независимо от наличия в системе модальных окон.
В ГМ или ДопГМ добавляем строчку:
Код
Сервис.ОбработкаОжидания("глУбить1С",60000);// например, 1 минута
Показать полностью

Прописываем процедуру:
Код
Процедура глПроверитьУбить1С() 
   Если ФС.СуществуетФайл(КаталогИБ()+"kill.out") =1 Тогда // например, просто проверим наличие такого файла  
      //так не сработает при наличии модального окна
      //ЗавершитьРаботуСистемы(0);       
      ЗапуститьПриложение(КаталогИБ()+"Kill1CProcWnd.exe");  // так сработает ;)         
   КонецЕсли;
КонецПроцедуры
Показать полностью

3. Abadonna 3958 03.11.08 07:17 Сейчас в теме
+(2) Сорри, опечатка после копирования... ;)
[code]Процедура глУбить1С()[/b] должно быть
4. Abadonna 3958 05.11.08 09:49 Сейчас в теме
Проверил под 8-кой. В отличие от 77 там ПодключитьОбработчикОжидания отрабатывает при наличии окон типа Вопрос и Предупреждение. Не отрабатывает только, если открыт диалог выбора файла.
Примерный код для "изнутри" в 8-ке
Код
Процедура глУбить1С() Экспорт
   Каталог="c:\V8_Бухгалтерия1_6_8_3"; // для файловой системы можно получить тек. каталог базы через   СтрокаСоединенияИнформационнойБазы();
   Файл = Новый Файл(Каталог+"\kill.out");
   Если Файл.Существует()=Истина Тогда
      ЗапуститьПриложение("Kill1CProcWnd.exe",Каталог,Истина);
   КонецЕсли;   
КонецПроцедуры
Процедура ПриНачалеРаботыСистемы()
        //...........................................
        ПодключитьОбработчикОжидания("глУбить1С",60,Ложь);
КонецПроцедуры
Показать полностью

5. BabySG 05.11.08 17:59 Сейчас в теме
Эээээ.... Такие зависшие окна, типа предупреждения, появляются от неграмотной разработки. Там даже есть параметр специальный для автозакрытия.
Действительно для 8.х, но, полагаю, и в 77 тоже самое.
6. ValeriVP 1303 05.11.08 18:01 Сейчас в теме
а это не спортивно использовать?

TASKKILL [/S <система> [/U <пользователь> [/P [<пароль>]]]]
{ [/FI <фильтр>] [/PID <процесс> | /IM <образ>] } [/F] [/T]

Описание:
Эта команда позволяет завершить один или несколько процессов.
Процесс может быть завершен по имени образа или по идентификатору процесса.

Список параметров:
/S <система> Подключаемый удаленный компьютер.

/U [<домен>\]<пользователь> Пользовательский контекст, в котором
должна выполняться эта команда.

/P <пароль> Пароль для этого пользовательского контекста.
Запрашивает пароль, если он не задан.

/F Принудительное завершение процесса


/FI <фильтр> Отображение задач, отвечающих
указанному в фильтре критерию.

/PID <процесс> Идентификатор процесса, который требуется
завершить.

/IM <образ> Имя образа процесса, который требуется
завершить. Для указания всех процессов
можно использовать символ шаблона '*'.

/T Завершение указанного процесса
и всех его дочерних процессов.

/? Вывод справки по использованию.

Фильтры:
Имя фильтра Допустимые операторы Допустимые значения
----------- -------------------- -------------------
STATUS eq, ne RUNNING | NOT RESPONDING
IMAGENAME eq, ne Имя образа
PID eq, ne, gt, lt, ge, le Значение PID
SESSION eq, ne, gt, lt, ge, le Номер сессии
CPUTIME eq, ne, gt, lt, ge, le Время CPU в формате
hh:mm:ss.
hh - часы,
mm - минуты, ss - секунды
MEMUSAGE eq, ne, gt, lt, ge, le Использование памяти в КБ
USERNAME eq, ne Имя пользователя в формате
[<домен>\]<пользователь>
MODULES eq, ne Имя DLL
SERVICES eq, ne Имя службы
[b] WINDOWTITLE eq, ne Заголовок окна[b]

Примечание: Символ '*' для параметра /IM применим только совместно с фильтрами.

Примечание: Завершение удаленных процессов всегда будет принудительным,
независимо от того, был ли использован параметр /F или нет.

Примеры:
TASKKILL /S <система> /F /IM notepad.exe /T
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM notepad.exe /IM mspaint.exe
TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"
TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe
TASKKILL /S <система> /U <домен>\<пользователь> /FI "USERNAME ne NT*" /IM *
TASKKILL /S <система> /U <пользователь> /P <пароль> /FI "IMAGENAME eq note*"
8. Abadonna 3958 05.11.08 18:10 Сейчас в теме
(6)>Процесс может быть завершен по имени образа или по идентификатору процесса.
Позволь узнать а откуда ты PID возмешь? И вас ис дас Имя образа процесса?
Если ты внимательно читал, то "notepad.exe " не катит, если я хочу закрыть именно этот блокнот, а не ваще все блокноты. И чем спортивно писать корявые скрипты, когда эта прога все спокйно делает сама: ищет и PIDы, и хэндлы завершения процесса, и все окна данного процесса.
9. ValeriVP 1303 05.11.08 18:15 Сейчас в теме
(8) это все не обязательно, если ты внимательно читал :)
попробуй закрыть блокнот например так:
taskkill /fi "windowtitle eq 1.txt - Блокнот"
10. Abadonna 3958 05.11.08 18:17 Сейчас в теме
(9) Тогда скажи в чем разница написать строчку в ini-файл с заголовком окна, или написать строчку такого скрипта?
12. ValeriVP 1303 05.11.08 18:27 Сейчас в теме
(10) разница в необходимости дополнительных компонентов для работы системы
(11) тогда попробуй закрыть блокнот так:
[b]taskkill /f /fi "windowtitle eq 1.txt - Блокнот"
13. Abadonna 3958 05.11.08 18:38 Сейчас в теме
(12) По последнему варианту - согласен, мочит.
Ну а насчет "дополнительных компоненов" - несогласен. Мало ли каких прог в Винде работает?
Эта пить-есть не просит, и в памяти какие-то миллисекунды торчит
14. Abadonna 3958 05.11.08 18:43 Сейчас в теме
+(13) Кстати, 7.7 с торчащим предупреждение не мочит.
Заголовок окна - 1С:Предприятие - БД: C:\УпрОтладка\ , торчит Предупреждение
taskkill /f /fi "windowtitle eq 1С:Предприятие - БД: C:\УпрОтладка\" - правильно написал?
не мочит
19. Abadonna 3958 05.11.08 18:54 Сейчас в теме
+(14) Оно вообще не убивает окно с таким титлом. Либо я неправильно написал скрипт, хотя точно по аналогии, либо....
15. ValeriVP 1303 05.11.08 18:44 Сейчас в теме
(13) дополнительные компоненты - зло, когда можно без них обойтись.
их использование показывает, что разработчик такого ПО не умеет читать инструкции, и считает себя самым умным.
а один самый умный тут уже есть, зачем нам два?
17. Abadonna 3958 05.11.08 18:47 Сейчас в теме
(15)>а один самый умный тут уже есть, зачем нам два?
Кстати, любителей "простых решений" ту еще больше :)))
11. Abadonna 3958 05.11.08 18:24 Сейчас в теме
(9) Ну вот, проверил. "Спокойный" блокнот мочит, а вот блокнос с вопросом "Текст...измененен.. сохранить?" при отработке твоего скрипта вызывает еще одно такое же окно c тем же вопросом. Если бы стояла задача просто замочить окно, то фигли париться? Послал SendMessage(hwnd, WM_CLOSE,0,0) - и всех дел
7. Abadonna 3958 05.11.08 18:02 Сейчас в теме
()>типа предупреждения, появляются от неграмотной разработки.
Немного неправильно полагаешь ;) Любой док в 77 просто обязан спросить Сохранить?Закрыть?
Плюс, например, брошенное "на произвол судьбы" окно авторизации доступа. Плюс всякие предупреждения от разработчиков (самой 1С), не перелопачивать же весь код за ними.
16. Abadonna 3958 05.11.08 18:45 Сейчас в теме
18. ValeriVP 1303 05.11.08 18:54 Сейчас в теме
так попробуй
taskkill /f /fi "windowtitle eq 1С:Предприятие - БД: C:\УпрОтладка\ "
20. Abadonna 3958 05.11.08 18:59 Сейчас в теме
(18)Угум, и тут согласен. Только одно непонятно: я заголовок брал со spyxx мелксофтовского, а он возвращает титлы с пробелами (там пробела в конце не было). При этом моя с ini-строчкой без пробела на конце (trim) убивает, у тут как угадать сколько пробелов в конце добавить?
21. ValeriVP 1303 05.11.08 19:03 Сейчас в теме
(20) не нравится ему последний символ "\". если в командной строке после него ставить пробел или второй такой-же - нормально работает. наверно он рассматривает этот символ как подстановочный. вот только доки найти не могу
22. Abadonna 3958 05.11.08 19:06 Сейчас в теме
(21)>не нравится ему последний символ "\"
Ну вот ;) Бум считать, что моя для не особо продвинутых, которым не надо заморачиваться какие символы не нравятся команде taskkill ;)
23. Abadonna 3958 05.11.08 19:10 Сейчас в теме
+(22) Кстати, когда писал гарббер статус-строки для конфигуратора и 1С, товарисч Чебурашка мне ТАКИЕ титлы подкитывал, с ТАКОЙ тучей знаков препинания и черт еще чем, что, думаю,
у taskkill точно бы крышак съехал :))))
24. Abadonna 3958 05.11.08 19:23 Сейчас в теме
+(23) Я ж любопытный! ;)
Попробовал такой титл 1С:Предприятие - БД: C:\УпрОтладка\*-
Ни с пробелом на конце, ни с пробелом после обратного флеша не отрабатывает taskkill
А уж чаво могут люди в ЗаголовоСистемы навтыкать - я себе очень хорошо представляю.
26. Abadonna 3958 05.11.08 19:27 Сейчас в теме
(24) ты, видать, не успел прочесть ;)
27. ValeriVP 1303 05.11.08 19:29 Сейчас в теме
25. ValeriVP 1303 05.11.08 19:26 Сейчас в теме
(22) ну вот, после серии опытов было выяснено - можно taskill ставить просто дополнительный пробел (или несколько) в фильтре (в конце), и все работает.
28. CheBurator 3119 05.11.08 19:31 Сейчас в теме
а убивается по точному заголовку или по вхождению сигнальной строки в заголовок?
29. Abadonna 3958 05.11.08 19:32 Сейчас в теме
Моя убивает по точному, но можно приделать и по вхождению (целую строчку в код дописать:))
А вот как taskkill - не знаю... Видишь, какие-то нюансы там получаются... То ему то не нравится, то это...
30. Abadonna 3958 05.11.08 19:42 Сейчас в теме
+(29) По вхождению - все-таки плохо.
Например, у меня открыты базы с заголовоками: Моя база и Моя База *
Предположим, я эту зведочку использую, чтобы отличить рабочую от отладочной.
По вхождению - замочатся обе, а мне этого как раз не надо в данный момент
32. Fisherru 78 10.02.09 16:07 Сейчас в теме
(29) Не очень хорошо по точному.
Не то чтобы плохо, но у меня не катит :-(
Я в заголовок системы ещё год базы запихиваю и путь

СтарыйЗаголовок = ЗаголовокСистемы();
ЗаголовокСистемы(СтарыйЗаголовок+Строка(Константа.ГодБазы)+" < "+СокрЛП(КаталогИБ())+" > ");

так как базы время от времени обрезаются, а рабочая конфа всегда одна,
(30) а по расположению базы отличаю : рабочая - живая.
Так и не сумел поймать комбинацию, чтоб такой наворот эта программа кончала.
(30) Кстати, группе админов я такое ожидание просто не включаю ;-)
В общем бился я бился, так и не сумел точно изобразить заголовок окна,
после 5-го эксперимента... :-(
Можно мне вариант по вхождению?
Очень надо...
И, ещё, когда мы использовали команду
ЗавершитьРаботуСистемы() на SQL-ной базе, как-то раз случилось, что какой-то процесс подвис на серваке и никто не мог войти в базу. Наши админы намаялись исправляя ситуацию. С тех пор боимся пользовать подобное выгоняние.
А вот Kill1CProcWnd.exe корректно отработает? не будет проблем с SQL-лем?
31. WolfhounD 27.12.08 12:17 Сейчас в теме
Извини, а исходники exe не мог бы выложить?
33. Abadonna 3958 13.02.09 14:56 Сейчас в теме
По просьбе добавил версию 1.2 - "убиение" по вхождению строки из ini-файла в заголовок окна. Для запуска по вхождению запускать программу с ключом
/in. При запуске без ключа - будет работать только по полному совпадению
34. Fisherru 78 13.02.09 15:07 Сейчас в теме
35. Sergey_Murzinov 30.09.11 03:04 Сейчас в теме
Помогает спасать некоторых бухгалтеров (перед окончанием дня ставят отчеты)
Оставьте свое сообщение