Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глюк или кривые руки, Excel 2007 не выгружаеться из спроцессов 
:(
    Опции темы
Tellurian
Дата 9.10.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 11.6.2007
Где: Харьков

Репутация: нет
Всего: нет



 Доброго дня всем! 
Народ помогите, запарился уже искать ошибку.
Работаю с Excel 2007, использую позднее связывание и вот при программном закрытии приложения в списке процессов остаёться висеть EXCEL. 
Использую вот такой метод при закрытии:

           
Код

            string sAppProgID = "Excel.Application";
            object oExcel;
            try
            {
                oExcel = Marshal.GetActiveObject(sAppProgID);
                object[] args = new object[1];
                args[0] = false;
                oExcel.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, oExcel, args);
                Marshal.ReleaseComObject(oExcel);
                GC.GetTotalMemory(true);
            }


Подскажите, кто может  :crazy 


PM MAIL   Вверх
mr.DUDA
Дата 9.10.2007, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



У Excel.Application есть метод Quit, имхо. Нужно его дёрнуть до ReleaseComObject.


--------------------
user posted image
PM MAIL WWW   Вверх
Tellurian
  Дата 10.10.2007, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 11.6.2007
Где: Харьков

Репутация: нет
Всего: нет



Дописал и ничего не помогло, всё равно собака висит   smile 

Код

                oExcel = Marshal.GetActiveObject(sAppProgID);
                object[] args = new object[1];
                args[0] = false;
                oExcel.GetType().InvokeMember("Visible", BindingFlags.SetProperty, null, oExcel, args);
                args[0] = true;
                oExcel.GetType().InvokeMember("Quit", BindingFlags.InvokeMethod, null, oExcel, args);

                Marshal.ReleaseComObject(oExcel);
                GC.GetTotalMemory(true);



PM MAIL   Вверх
Tellurian
Дата 11.10.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 11.6.2007
Где: Харьков

Репутация: нет
Всего: нет



Народ, вас такая тема не интересовала? Никто не может помочь? 
PM MAIL   Вверх
NikeDeForest
Дата 11.10.2007, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 15.9.2007

Репутация: 1
Всего: 2



По моему, в каком-то офисе такой глюк был, что процесс экселя не убивался. Только был вроде давно smile. Попробуй другой пакет офиса, другую версию, одень другую рубашку, постучи в бубен smile (два последних - шутка ;) ).
--------------------
Еще один вопрос ...
PM   Вверх
Tellurian
Дата 11.10.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 11.6.2007
Где: Харьков

Репутация: нет
Всего: нет



Да, этот глюк был в 2003 офисе. Но я не думаю что в 2007 та же фигня осталась. Это просто тупо. 

Ладно, пускай висит хреновина. Закрываем эту тему, а жаль  smile  smile  smile 
PM MAIL   Вверх
Baa
Дата 11.10.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 1
Всего: 12



Как у тебя она вообще с ошибкой не валится при вызове метода Quit с таким количеством параметров?

MS Visual Studio 2005+MS Office 2007+Vista закрывает совершенно спокойно
Код

object oExcel = Marshal.GetActiveObject("Excel.Application");
            oExcel.GetType().InvokeMember("Quit", 
                BindingFlags.InvokeMethod, 
                null, 
                oExcel, 
                null);
            Marshal.ReleaseComObject(oExcel);



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Tellurian
Дата 12.10.2007, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 11.6.2007
Где: Харьков

Репутация: нет
Всего: нет



Код

object oExcel = Marshal.GetActiveObject("Excel.Application");
            oExcel.GetType().InvokeMember("Quit", 
                BindingFlags.InvokeMethod, 
                null, 
                oExcel, 
                null);


Если так написать, то при закрытии будет выдаваться сообщение "Вы желаете сохранить изменения в файле?".

А если написать:
Код

oExcel.GetType().InvokeMember("Quit", BindingFlags.InvokeMethod, null, oExcel, args);

То он закрывает файл с принятием всех изменений, без выдачи ненужных вопросов.
PM MAIL   Вверх
Baa
Дата 13.10.2007, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 1
Всего: 12




Цитата

Application.Quit Method

expression.Quit

expression   A variable that represents an Application object.

Remarks

If unsaved workbooks are open when you use this method, Microsoft Excel displays a dialog box asking whether you want to save the changes. You can prevent this by saving all workbooks before using the Quit method or by setting the DisplayAlerts property to False. When this property is False, Microsoft Excel doesn’t display the dialog box when you quit with unsaved workbooks; it quits without saving them.

If you set the Saved property for a workbook to True without saving the workbook to the disk, Microsoft Excel will quit without asking you to save the workbook.




--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Tellurian
Дата 15.10.2007, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 11.6.2007
Где: Харьков

Репутация: нет
Всего: нет



2 Baa

То что вы написали - это очень хорошо, только несколько не помогает (((((
Я весь инет перелопатил, никто не может дать внятного ответа на вопрос "ПОЧЕМУ В ПРОЦЕССАХ ВИСИТ EXCEL?????????????"

Код

oExcel.GetType().InvokeMember("Quit", BindingFlags.InvokeMethod, null, oExcel, args);


Эта строчка закрывает Excel, но в процессах всё равно висит.

Это сообщение отредактировал(а) Tellurian - 15.10.2007, 10:06
PM MAIL   Вверх
GavriKos
Дата 17.10.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 8.8.2007
Где: Донецк, Украина

Репутация: нет
Всего: 1



Конечно не факт, что это метод. но может просто убить процесс? если конечно есть соответствующий клас... Например в классе System.Diagnostics.Process такое можно.
--------------------
Донецкая группа IT - присоединяемся
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0802 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.