![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Собственно вопрос в названии темы, возможно ли так сделать?
C эмулировать одновременный щелчок мышки (не так вначале туда щелкнул потом туда, а сразу в две точки) |
#2
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
saylar_06 (10.06.2012)
|
#3
|
|||
|
|||
![]() Цитата:
Вы по теме сказать что либо можете? |
#4
|
|||
|
|||
![]() используя нижеприведенный код у меня получилось кликнуть сразу по обеим вот только я не могу понять и определить произошел ли клик одновременно...
Код:
SetCursorPos(1774,858); mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); Sleep(15); SetCursorPos(1798,858); mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); P.S Опробовав на самописной программе выполняя определенное действие за клик, вроде действия начинались одновременно, но всё же есть подозрение на опоздание в 15 миллисекунд ![]() |
#5
|
||||
|
||||
![]() С одной мышью одновременный клик невозможен в принципе. Он может быть с минимальной задержкой, но не одновременный.
А вот если вы 2 мыши в системе имеете, то тут уже можно попробовать ![]() Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
saylar_06 (10.06.2012)
|
#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)
|