2

使用 Delphi,如何创建一个 (Windows) 控制台应用程序,其主线程初始化为COINIT_MULTITHREADED

如果我CoInitializeEx(nil, COINIT_MULTITHREADED)在第一条语句中调用,我会得到一个 HRESULT 0x80010106(设置后无法更改线程模式),所以很明显一些以前运行的代码已经调用了CoInitialize/Ex.

我怎样才能得到主线程COINIT_MULTITHREADED

4

1 回答 1

5

由于您的 uses 子句,您的程序中包含的单元之一已经在其单元初始化部分中初始化了 COM。

您需要识别该单元,并将其从程序中删除。

考虑这个程序:

{$APPTYPE CONSOLE}

uses
  ActiveX,
  ComObj;

begin
  Writeln(CoInitializeEx(nil, COINIT_MULTITHREADED));
end.

输出0表明一个空的控制台应用程序没有初始化 COM。

于 2019-08-02T11:19:38.617 回答