crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 28.3.2024, 12:55