关于多线程中调用CreateOleObject(200分)

  • 主题发起人 主题发起人 刘忠平
  • 开始时间 开始时间

刘忠平

Unregistered / Unconfirmed
GUEST, unregistred user!
我在线程中利用CreateOleObject来建立一个ole,可是系统老是报“消息筛选器中
显示该应用程序已经运行”,如果将CreateOleObject放在主线程中则一切正常。请问如果
不放在主线程中CreateOleObject怎样处理?
 
没有问题啊, 你试试下面的代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

TTestThread = class(TThread)
public
procedure Execute;
override;
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
uses
ActiveX, ComObj;
procedure TForm1.Button1Click(Sender: TObject);
begin
TTestThread.Create(False);
end;

{ TTestThread }
procedure TTestThread.Execute;
var
WordApp: Variant;
begin
CoInitialize(nil);
WordApp := CreateOleObject('Word.Application');
WordApp.Visible := True;
CoUninitialize;
end;

end.
 
后退
顶部