попробуй использовать 2 потока, в которых собственно и будут производиться клики. в потоках используй WaitForSingleObject (на Mutex) для ожидания команды на клик (через ReleaseMutex в основном потоке). смысл в том, что кликающие потоки создаются в основном потоке и ждут команды на запуск от основного.
http://data.cod.ru/152472
Код:
type
TThreadClick = class(TThread)
private
FButton: TButton;
protected
procedure Execute; override;
public
constructor Create(AButton: TButton);
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
FEvent: THandle;
implementation
{$R *.dfm}
constructor TThreadClick.Create(AButton: TButton);
begin
inherited Create(True);
FreeOnTerminate:=True;
FButton:=AButton;
Resume;
end;
procedure TThreadClick.Execute;
begin
WaitForSingleObject(FEvent, INFINITE);
PostMessage(FButton.Handle, BM_CLICK, 0, 0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FEvent:=CreateMutex(nil, True, nil);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
CloseHandle(FEvent);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add('Button1Click');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Add('Button2Click');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
TThreadClick.Create(Button1);
TThreadClick.Create(Button2);
Memo1.Lines.Add('Ok');
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ReleaseMutex(FEvent);
end;
end.
потоки создаются при клике на кнопку "Create", и срабатывают при клике на "Release". эксперименты показали, что сообщения "Button1Click" и "Button2Click" появляются в различной последовательности - естественно, что одновременно они и не могут появиться)