Форум: "WinAPI";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
ВнизЗавершение некоторых процессов с одинаковым именем Найти похожие ветки
← →
Vladix © (2007-02-01 16:32) [0]При выгрузке отчета в Excel в фоне (т.е. В закрытом состоянии), если это напрягает юзера, он завершает программу, но этот Excel в памяти продолжает висеть. Путем последовательных повторений можно сделать много таких процессов. Но среди них может быть один, с которым юзер работает непосредственно. Вопрос - как мне отфильтровать этот процесс и получить доступ ко всем оставшимся для их убийства?
← →
Сергей М. © (2007-02-01 16:39) [1]
> если это напрягает юзера
..значит грош цена тебе как программисту, если ты не даешь юзеру возможности прервать сей "занимательный процесс" корректно, безо всяких там "продолжает висеть"
← →
Vladix © (2007-02-01 17:00) [2]Хороший не ответ...
Может быть Вы, как хороший программист в силах хотя бы предположить, что такая ситуация могла бы произойти с Вами? Если у Вас нет фантазии смоделировать подобную ситуация, когда от Вас мало чего зависит, могу Вам помочь.
Но может лучше не тратить времени на дискуссии, не касающиеся вопроса?
Такое имеет место, собственными силами этот вопрос решить я оказался не в силах, проблема озвучена...
Буду рад услышать любое предложение по теме вопроса
← →
Игорь Шевченко © (2007-02-01 17:09) [3]
> он завершает программу, но этот Excel в памяти продолжает
> висет
а по завершении программы Excel.Quit сказать ? Вроде вполне кошерно
← →
Elen © (2007-02-01 17:10) [4]
> если это напрягает юзера, он завершает программу,
А ты не скрывай процесс. Пусть юзер видит на экране что что-то движется, как это в Commandere сделано. Юзера не должно ничего напрягать, а если твой процесс может выпасть в состояние "не отвечает", то это уж ты виноват, а не юзер.
← →
Vladix © (2007-02-01 17:19) [5]Ладно, углубимся в подробности.
Наша организация пользует FastReport. В этом генераторе отчетов есть возможность вывода отчета в прописанный экселевский шаблон, причем FR берет на себя вся работу по связи с БД, выполнению запроса и выводу отчета. От программера требуется вызвать метод типа "Выполнить" этого объекта, а FR все остальное делает сам, в том числе и запуск Excel (скрытый, в отдельном процессе), так вот, если выполняется долгий запрос, умный пользователь просто завершает программу любым известным ему способом. А EXCEL.EXE продолжает висеть, удерживая файл шаблона.
Такая ситуация.
← →
Elen © (2007-02-01 17:27) [6]
> так вот, если выполняется долгий запрос
юююпользователь должен видеть ход его выполнения, хотя бы песочные часы.
> умный пользователь просто завершает программу любым известным
> ему способом
Пользователя который завершает программу по его же заданию не дождавшись результатов умным трудно назвать, исключения могут быть в том случае если пользователь по ощибке нажал не ту клавишу, но это уже должен продумывать разработчик проги, т.е. ты.
← →
Игорь Шевченко © (2007-02-01 17:30) [7]Vladix © (01.02.07 17:19) [5]
Может, задать вопрос FastReport"у ? Они наверное лучше в этом разберутся.
Или попросить пользователя убирать за собой мусор через TaskManager.
Совсем тупым способом может быть перебор всех окон, получение идентификатора процесса для каждого окна, для каких процессов Excel окна не будет - убивать. Но сдается мне, можно навредить.
← →
Vladix © (2007-02-01 17:43) [8]Игорь, спасибо!
По крайней мере, вы посмотрели на проблему моими глазами, без каких-то наездов на мой непрофессионализм. Над предложенными Вами вариантами я уже думал, видимо придется искать золотую середину между автоматической зачисткой процессов и предоставлении свободы действий пользователю.
← →
Сергей М. © (2007-02-02 09:07) [9]
> когда от Вас мало чего зависит
Да что Вы говорите ?!
А исходники FastReporta для кого даны ?
← →
Чапаев © (2007-02-02 09:18) [10]
GetWindowThreadProcessId(Handle,Tr00Excel);
WinExec(Format("taskkill /f /im excel.exe /fi "PID ne %d",[Tr00Excel])
Хотя вообще-то [3] и [1].
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.047 c