在UI线程里初始化COM如下:
- QAxWidget* wordActive = new QAxWidget;
- wordActive->setControl("Word.Application");
- QAxObject * documents = wordActive->querySubObject("Documents");
- if (!documents)
- {
- return;
- }
- QAxObject * document = documents->querySubObject("Open (const QVariant &FileName)", fileFullPath);
- if (!document)
- {
- return;
- }
下面是开线程的代码:
- paperImportThread* threadImport = new paperImportThread;
- threadImport->document = document;
- threadImport->start();
线程里的代码如下:
- QAxObject* tables = document->querySubObject("Tables");
- QVariant count = tables->dynamicCall("Count()");
- int nTableCount = count.toInt();
跟踪进线程,document的值同UI线程里一样,但是tables为0x00000,把线程里的代码放在UI线程里是可以正确运行的。想不通是什么地方有错,希望大家指点迷津。。。