Прекратяване на някои процеси със същото име

При разтоварване на отчет в Excel във фонов режим (т.е. в затворено състояние), ако това дразни потребителя, той прекратява програмата, но този Excel продължава да виси в паметта. Чрез последователни повторения могат да се извършат много такива процеси. Но сред тях може да има такъв, с който потребителят работи директно. Въпросът е - как да филтрирам този процес и да получа достъп до всички останали, за да ги убия?

> ако дразни потребителя

..това означава, че си безполезен като програмист, ако не дадеш на потребителя възможност да прекъсне този "забавен процес"правилно, без никакви "продължава да виси там"

Не е добър отговор.

Може би вие, като добър програмист, можете поне да си представите, че подобна ситуация може да ви се случи? Ако нямате въображение да симулирате подобна ситуация, когато малко зависи от вас, мога да ви помогна. Но може би е по-добре да не губите време в дискусии, които не са свързани с проблема? Случаят е такъв, не можах да разреша този проблем сам, проблемът беше изразен. Ще се радвам да чуя всяко предложение по темата на въпроса

> той прекратява програмата, но този Excel в паметта продължава > висящ

и в края на програмата Excel.Quit кажете ? Изглежда доста кошерно

> ако това притеснява потребителя, той прекратява програмата,Не крийте процеса. Нека потребителят види на екрана, че нещо се движи, както се прави в Commandere. Потребителят не трябва да се безпокои от нищо и ако вашият процес може да изпадне в състояние "не отговаря", тогава вината е ваша, а не потребителят.

Добре, нека навлезем в подробности. Нашата организация използва FastReport. Този генератор на отчети има способността да извежда отчет към предписан шаблон на Excel и FR поема всичкоработа по комуникация с базата данни, изпълнение на заявки и извеждане на отчет. От програмиста се изисква да извика метод от типа "Run" на този обект, а FR прави всичко останало сам, включително стартиране на Excel (скрит, в отделен процес), така че, ако се изпълни дълга заявка, интелигентният потребител просто прекратява програмата по какъвто и да е начин, който му е известен. И EXCEL.EXE продължава да виси, като държи шаблонния файл. Това е положението.

> така че, ако се изпълнява дълга заявкапотребителят трябва да види напредъка на нейното изпълнение, поне като пясъчен часовник.> умният потребител просто прекратява програмата с всеки известен > неговия начинТрудно е да се нарече умен потребител, който изпълнява програмата според собствената си задача, без да чака резултатите, изключения могат да бъдат, ако потребителят е натиснал грешен клавиш по погрешка, но това вече трябва да е обмислено от разработчика на програмата, т.е. Вие.

Може би попитайте FastReport "y ? Те вероятно ще го разберат по-добре. Или помолете потребителя да почисти след себе си чрез TaskManager.

Напълно глупав начин може да бъде да изброите всички прозорци, да получите идентификатора на процеса за всеки прозорец, за който Excel процеси няма да има прозорци - убийте. Но ми се струва, че може да навреди.

Игор, благодаря ти! Поне погледна проблема през моите очи, без нападки за липсата на професионализъм. Вече обмислих вариантите, които предложихте, явно ще трябва да търся нещо средно между автоматично почистване на процесите и даване на свобода на действие на потребителя.

> когато малко зависи от теб

За какво говориш?!

За кого са източниците на FastReporta?