Название: Проблема с процессом WINWORD.EXE Отправлено: Alex_M от Февраль 03, 2010, 13:57 Здравствуйте! Использую компонент QAxWidget для отображения в главном окне своей программы документа Word.
Делаю это стандартным способом: ui.axWidget->setControl("C:/1.doc"), где axWidget собственно сам QAxWidget, размещенный на окно в дизайнере. Все работает нормально, однако после закрытия программы, остается процесс WINWORD.EXE, который подгружает память компьютера пользователя. Как при выходе его можно программно останавить? Буду благодарен за любые советы и помощь. Название: Re: Проблема с процессом WINWORD.EXE Отправлено: CroCIV от Февраль 08, 2010, 13:45 пробуй так
ui.axWidget->dynamicCall("Quit()"); Название: Re: Проблема с процессом WINWORD.EXE Отправлено: Alex_M от Февраль 08, 2010, 17:17 Да вот не помогает, к сожалению ???
Делаю простейшее тестовое приложение: 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 остается все равно } test::~test() { } Как ни пробовал, не получается (использую MS Office 2007). Название: Re: Проблема с процессом WINWORD.EXE Отправлено: CroCIV от Февраль 09, 2010, 15:53 а ну так я и знал, когда ты выполняешь
Код: ui.axWidget->setControl("C:/1.doc"); ты по сути в ui.axWidget получаешь указатель не на обьект Word.Application, как те кажется, а на обьект _Document вот попробуй выполнить команду Код: QString sss = excel->generateDocumentation(); и дабы в дальнейшем не натыкаться на подобного рода грабли делай как все, как-нить вот так (ну мне лень было под офис код адаптировать, думаю разберешься ;) ) : Код: void Create_table_wizard::opnShbln(qulonglong *someExcel) Название: Re: Проблема с процессом WINWORD.EXE Отправлено: Alex_M от Февраль 10, 2010, 13:07 CroCIV, спасибо за помощь. Почти разобрался с твоим кодом. Один момент - никак не пойму переход от QAxWidget к QAxObject. Если делаю так ui.axWidget->setControl("Word.Document"), то в виджете отображается пустой документ и получаю указатель на _Document, если делаю так - ui.axWidget->setControl("Word.Application"), то получаю указатель уже на Application, где все работает (и Open, и Quit, и другие куча методов (generatedocumentation() - это круто, как на ладони)). Одна проблема Word отображается не в axWidget, а отдельно от моей программы. Как же мне его впихнуть в виджет? Или может поподробней опишешь переход от QAxObject к QAxWidget?
Название: Re: Проблема с процессом WINWORD.EXE Отправлено: CroCIV от Февраль 10, 2010, 13:58 Попробуй тогда вот так: Код: ui.axWidget->setControl("C:/1.doc"); Название: Re: Проблема с процессом WINWORD.EXE Отправлено: Alex_M от Февраль 10, 2010, 16:50 Ты знаешь смех смехом, но и это не помогает ::) Уже склоняюсь в ту сторону, чтобы просто убивать при выходе их программы процесс Winword.exe с помощью API
|