• 3414阅读
  • 1回复

接着昨天的多线程中使用COM的问题问下,希望大家进来帮忙解下惑。 [复制链接]

上一主题 下一主题
离线darlings
 

只看楼主 倒序阅读 楼主  发表于: 2010-01-27
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
在UI线程里初始化COM如下:
  1.     QAxWidget* wordActive = new QAxWidget;
  2. wordActive->setControl("Word.Application");
  3.     QAxObject * documents = wordActive->querySubObject("Documents");
  4.     if (!documents)
  5.     {
  6.         return;
  7.     }    
  8.     QAxObject * document = documents->querySubObject("Open (const QVariant &FileName)", fileFullPath);
  9.     if (!document)
  10.     {
  11.         return;
  12.     }

下面是开线程的代码:
  1.     paperImportThread* threadImport = new paperImportThread;    
  2.     threadImport->document = document;
  3.     threadImport->start();


线程里的代码如下:
  1.     QAxObject* tables = document->querySubObject("Tables");
  2.     QVariant count = tables->dynamicCall("Count()");
  3.     int nTableCount = count.toInt();

跟踪进线程,document的值同UI线程里一样,但是tables为0x00000,把线程里的代码放在UI线程里是可以正确运行的。想不通是什么地方有错,希望大家指点迷津。。。
离线darlings

只看该作者 1楼 发表于: 2010-01-27
谁来指点一下呀。。。
快速回复
限100 字节
 
上一个 下一个