crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Active X и MS Word
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
straylon Дата 12.2.2010, 11:30
 
Цитата(Wlad @ 11.2.2010, 15:07) *
Попробовал так:

dynamicCall("SetDisplayAlerts(bool)", FALSE); // НЕ Выводить сообщения
dynamicCall("Quit()");

процесс в памяти после выхода из программы не остается.
В свое время, много работал с Excel в Builder. Был такой же эффект, как и у Вас. Если пользователь не выходя из программы несколько раз запускал отчет в Excel, то все процессы оставались в памяти даже после выхода из программы. После обсуждения этого явления на соответствующем форуме пришли к выводу, что это проблема Microsoft. Выход из положения был один: удалять процесс самому через API Windows.

Wlad, а ты как это делаешь
так -
ui.axWidget->dynamicCall("SetDisplayAlerts(bool)", FALSE);
ui.axWidget->dynamicCall("Quit()");
или так
QAxObject* word = new QAxObject ("Word.Application");
word->dynamicCall("SetDisplayAlerts(bool)", FALSE);
word->dynamicCall("Quit()");
Просто в первом случае не работает, а во втором работает. Но второй случай меня не устраивает, т.к. работа с Вордом ведется через ui.axWidget, а не через Word.Application, как отдельное от моей программы приложение Ворд.
Wlad Дата 11.2.2010, 14:07
  Попробовал так:

dynamicCall("SetDisplayAlerts(bool)", FALSE); // НЕ Выводить сообщения
dynamicCall("Quit()");

процесс в памяти после выхода из программы не остается.
В свое время, много работал с Excel в Builder. Был такой же эффект, как и у Вас. Если пользователь не выходя из программы несколько раз запускал отчет в Excel, то все процессы оставались в памяти даже после выхода из программы. После обсуждения этого явления на соответствующем форуме пришли к выводу, что это проблема Microsoft. Выход из положения был один: удалять процесс самому через API Windows.
straylon Дата 10.2.2010, 17:12
  Здравствуйте! Использую компонент QAxWidget для отображения в главном окне своей программы документа Word.
Делаю это стандартным способом: ui.axWidget->setControl("C:/1.doc"), где axWidget собственно сам QAxWidget, размещенный на окно в дизайнере. Все работает нормально, однако после закрытия программы, остается процесс WINWORD.EXE, который подгружает память компьютера пользователя. Как при выходе его можно программно останавить? Буду благодарен за любые советы и помощь.
Вот код:
test::test(QWidget *parent, Qt::WFlags flags)
   : QMainWindow(parent, flags)
{
   ui.setupUi(this);
   connect (ui.pushButton, SIGNAL (clicked()), this, SLOT (active()));
   connect (ui.pushButton_2, SIGNAL (clicked()), this, SLOT (exit()));
}
void test::active()
{
   ui.axWidget->setControl("C:/1.doc"); // помещаю в QAxWidget документ

}
void test::exit() // это выполняется при закрытии
{
   ui.axWidget->dynamicCall("Quit()"); //не выходит
   ui.axWidget->close(); // виджет с документом закрывается, но процесс Winword.exe остается все равно
   //пробую так - тоже ничего
  QAxObject *app = ui.axWidget->querySubObject("Application");
  app->dynamicCall("Quit()");
}

test::~test()
{

}
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.7.2025, 8:01