![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#6
|
||||
|
||||
![]() попробуй использовать 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" появляются в различной последовательности - естественно, что одновременно они и не могут появиться) Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
saylar_06 (10.06.2012)
|