使用 Delphi,如何创建一个具有初始化为 COINIT_MULTITHREADED
的主线程的 (Windows) 控制台应用程序?
如果我在第一个语句中调用CoInitializeEx(nil, COINIT_MULTITHREADED)
,我会得到一个HRESULT 0x80010106(设置后无法更改线程模式),所以显然之前运行的一些代码已经调用CoInitialize/Ex
.
如何让主线程成为COINIT_MULTITHREADED
?
最佳答案
由于使用子句而包含在程序中的单元之一已经在其单元初始化部分中初始化了 COM。
您需要识别该单元,并将其从您的程序中删除。
考虑这个程序:
{$APPTYPE CONSOLE}
uses
ActiveX,
ComObj;
begin
Writeln(CoInitializeEx(nil, COINIT_MULTITHREADED));
end.
输出为0
,这表明空控制台应用程序不会初始化 COM。
关于delphi - 如何让控制台应用程序的主线程成为MTA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57325229/