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

21.02.09

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
-
.1225601054 196,60Kb
730
730 Скачать бесплатно
-
.1234526068 196,63Kb
213
213 Скачать бесплатно

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

См. также

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

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

12000 руб.

02.09.2020    169313    937    403    

905

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    12619    99    42    

101

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    26541    90    48    

134

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

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

22200 руб.

06.10.2023    16833    41    15    

75

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

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

15000 руб.

10.11.2023    11400    40    27    

66

SALE! %

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

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

4800 3840 руб.

14.01.2013    190556    1150    0    

918

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    783    2    0    

4

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

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

5000 руб.

07.02.2018    103934    244    100    

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

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

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

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

3. Abadonna 3969 03.11.08 07:17 Сейчас в теме
+(2) Сорри, опечатка после копирования... ;)
[code]Процедура глУбить1С()[/b] должно быть
4. Abadonna 3969 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 1340 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 3969 05.11.08 18:10 Сейчас в теме
(6)>Процесс может быть завершен по имени образа или по идентификатору процесса.
Позволь узнать а откуда ты PID возмешь? И вас ис дас Имя образа процесса?
Если ты внимательно читал, то "notepad.exe " не катит, если я хочу закрыть именно этот блокнот, а не ваще все блокноты. И чем спортивно писать корявые скрипты, когда эта прога все спокйно делает сама: ищет и PIDы, и хэндлы завершения процесса, и все окна данного процесса.
9. ValeriVP 1340 05.11.08 18:15 Сейчас в теме
(8) это все не обязательно, если ты внимательно читал :)
попробуй закрыть блокнот например так:
taskkill /fi "windowtitle eq 1.txt - Блокнот"
10. Abadonna 3969 05.11.08 18:17 Сейчас в теме
(9) Тогда скажи в чем разница написать строчку в ini-файл с заголовком окна, или написать строчку такого скрипта?
12. ValeriVP 1340 05.11.08 18:27 Сейчас в теме
(10) разница в необходимости дополнительных компонентов для работы системы
(11) тогда попробуй закрыть блокнот так:
[b]taskkill /f /fi "windowtitle eq 1.txt - Блокнот"
13. Abadonna 3969 05.11.08 18:38 Сейчас в теме
(12) По последнему варианту - согласен, мочит.
Ну а насчет "дополнительных компоненов" - несогласен. Мало ли каких прог в Винде работает?
Эта пить-есть не просит, и в памяти какие-то миллисекунды торчит
14. Abadonna 3969 05.11.08 18:43 Сейчас в теме
+(13) Кстати, 7.7 с торчащим предупреждение не мочит.
Заголовок окна - 1С:Предприятие - БД: C:\УпрОтладка\ , торчит Предупреждение
taskkill /f /fi "windowtitle eq 1С:Предприятие - БД: C:\УпрОтладка\" - правильно написал?
не мочит
19. Abadonna 3969 05.11.08 18:54 Сейчас в теме
+(14) Оно вообще не убивает окно с таким титлом. Либо я неправильно написал скрипт, хотя точно по аналогии, либо....
15. ValeriVP 1340 05.11.08 18:44 Сейчас в теме
(13) дополнительные компоненты - зло, когда можно без них обойтись.
их использование показывает, что разработчик такого ПО не умеет читать инструкции, и считает себя самым умным.
а один самый умный тут уже есть, зачем нам два?
17. Abadonna 3969 05.11.08 18:47 Сейчас в теме
(15)>а один самый умный тут уже есть, зачем нам два?
Кстати, любителей "простых решений" ту еще больше :)))
11. Abadonna 3969 05.11.08 18:24 Сейчас в теме
(9) Ну вот, проверил. "Спокойный" блокнот мочит, а вот блокнос с вопросом "Текст...измененен.. сохранить?" при отработке твоего скрипта вызывает еще одно такое же окно c тем же вопросом. Если бы стояла задача просто замочить окно, то фигли париться? Послал SendMessage(hwnd, WM_CLOSE,0,0) - и всех дел
7. Abadonna 3969 05.11.08 18:02 Сейчас в теме
()>типа предупреждения, появляются от неграмотной разработки.
Немного неправильно полагаешь ;) Любой док в 77 просто обязан спросить Сохранить?Закрыть?
Плюс, например, брошенное "на произвол судьбы" окно авторизации доступа. Плюс всякие предупреждения от разработчиков (самой 1С), не перелопачивать же весь код за ними.
16. Abadonna 3969 05.11.08 18:45 Сейчас в теме
18. ValeriVP 1340 05.11.08 18:54 Сейчас в теме
так попробуй
taskkill /f /fi "windowtitle eq 1С:Предприятие - БД: C:\УпрОтладка\ "
20. Abadonna 3969 05.11.08 18:59 Сейчас в теме
(18)Угум, и тут согласен. Только одно непонятно: я заголовок брал со spyxx мелксофтовского, а он возвращает титлы с пробелами (там пробела в конце не было). При этом моя с ini-строчкой без пробела на конце (trim) убивает, у тут как угадать сколько пробелов в конце добавить?
21. ValeriVP 1340 05.11.08 19:03 Сейчас в теме
(20) не нравится ему последний символ "\". если в командной строке после него ставить пробел или второй такой-же - нормально работает. наверно он рассматривает этот символ как подстановочный. вот только доки найти не могу
22. Abadonna 3969 05.11.08 19:06 Сейчас в теме
(21)>не нравится ему последний символ "\"
Ну вот ;) Бум считать, что моя для не особо продвинутых, которым не надо заморачиваться какие символы не нравятся команде taskkill ;)
23. Abadonna 3969 05.11.08 19:10 Сейчас в теме
+(22) Кстати, когда писал гарббер статус-строки для конфигуратора и 1С, товарисч Чебурашка мне ТАКИЕ титлы подкитывал, с ТАКОЙ тучей знаков препинания и черт еще чем, что, думаю,
у taskkill точно бы крышак съехал :))))
24. Abadonna 3969 05.11.08 19:23 Сейчас в теме
+(23) Я ж любопытный! ;)
Попробовал такой титл 1С:Предприятие - БД: C:\УпрОтладка\*-
Ни с пробелом на конце, ни с пробелом после обратного флеша не отрабатывает taskkill
А уж чаво могут люди в ЗаголовоСистемы навтыкать - я себе очень хорошо представляю.
26. Abadonna 3969 05.11.08 19:27 Сейчас в теме
(24) ты, видать, не успел прочесть ;)
27. ValeriVP 1340 05.11.08 19:29 Сейчас в теме
25. ValeriVP 1340 05.11.08 19:26 Сейчас в теме
(22) ну вот, после серии опытов было выяснено - можно taskill ставить просто дополнительный пробел (или несколько) в фильтре (в конце), и все работает.
28. CheBurator 2689 05.11.08 19:31 Сейчас в теме
а убивается по точному заголовку или по вхождению сигнальной строки в заголовок?
29. Abadonna 3969 05.11.08 19:32 Сейчас в теме
Моя убивает по точному, но можно приделать и по вхождению (целую строчку в код дописать:))
А вот как taskkill - не знаю... Видишь, какие-то нюансы там получаются... То ему то не нравится, то это...
30. Abadonna 3969 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 3969 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 Сейчас в теме
Помогает спасать некоторых бухгалтеров (перед окончанием дня ставят отчеты)
Оставьте свое сообщение