Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Astrox
12 / 12 / 2
Регистрация: 20.12.2008
Сообщений: 73
1

Эмуляция кнопок мыши

26.04.2011, 16:13. Просмотров 2315. Ответов 5
Метки нет (Все метки)

Я хочу эмулировать нажатие кнопок мыши. Например если я нажму левую кнопку мыши, программа должна это перехватить и сэмулировать нажатие правой кнопки мыши, затем сразу левую кнопку.
Я весь интернет обрыл и не нашет никакой литературы..
Вот пример как я эмулировал нажатие клавишь клавиатуры присоединяя к таймеру...
Возможно он поможет, даст какието идеи насчет реализации моей проблемы.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
var
  Form5: TForm5;
  len,i,j:integer;
  ar:array[0..50] of char;
 
implementation
 
{$R *.dfm}
 
procedure TForm5.BitBtn1Click(Sender: TObject); //кнопка "вниз"
begin
  Form5.Edit2.Text:=Form5.Edit2.Text+'d';
  ar[i]:='d';
  i:=i+1;
end;
 
procedure TForm5.BitBtn2Click(Sender: TObject); //кнопка "вверх"
begin
  Form5.Edit2.Text:=Form5.Edit2.Text+'u';
  ar[i]:='u';
  i:=i+1;
end;
 
procedure TForm5.BitBtn3Click(Sender: TObject); //кнопка "вправо"
begin
  Form5.Edit2.Text:=Form5.Edit2.Text+'r';
  ar[i]:='r';
  i:=i+1;
end;
 
procedure TForm5.BitBtn4Click(Sender: TObject); //кнопка "влево"
begin
  Form5.Edit2.Text:=Form5.Edit2.Text+'l';
  ar[i]:='l';
  i:=i+1;
end;
 
procedure TForm5.BitBtn5Click(Sender: TObject); //кнопка "PageDown"
begin
  Form5.Edit2.Text:=Form5.Edit2.Text+'7';
  ar[i]:='7';
  i:=i+1;
end;
 
procedure TForm5.BitBtn6Click(Sender: TObject); //кнопка "PageUp"
begin
  Form5.Edit2.Text:=Form5.Edit2.Text+'3';
  ar[i]:='3';
  i:=i+1;
end;
 
procedure TForm5.BitBtn8Click(Sender: TObject); //кнопка "пуск"
var i:integer;
begin
  len:=length(Form5.Edit2.Text);
  Form5.Timer1.Enabled:=True;
end;
 
procedure TForm5.FormCreate(Sender: TObject); //создание формы
begin
  i:=0;
  j:=0;
end;
 
procedure SimulateKeystroke(Key: byte; extra: DWORD); //нашел в интернете, что значит эта процедура - ума не приложу, но это ключ к эмуляции нажатия кнопок клавиатуры
begin
  keybd_event(Key, extra, 0, 0);
  keybd_event(Key, extra, KEYEVENTF_KEYUP, 0);
end;
 
procedure TForm5.Timer1Timer(Sender: TObject); //таймер спустя заданый интервал выполняет команды
begin
  if j=len then j:=0 //этим мы задали бесконечное выполнение подальших команд...
    else
    begin
      if ar[j]='u' then //проверка на символ
        begin
          SimulateKeystroke(VK_UP, 0); //нажатие кнопки клавиатуры "вверх"
          Label2.Caption:='вверх';
        end
      else
        if ar[j]='d' then
        begin
          SimulateKeystroke(VK_DOWN, 0);
          Label2.Caption:='вниз';
        end
      {else
        if ar[j]='7' then
        begin
          SimulateKeystroke(VK_PAGEDOWN, 0);
        end}
      else
        if ar[j]='r' then
        begin
          SimulateKeystroke(VK_RIGHT, 0);
          Label2.Caption:='вправо';
        end
      else
        if ar[j]='l' then
        begin
          SimulateKeystroke(VK_LEFT, 0);
          Label2.Caption:='влево';
        {end
        else
        if ar[j]='м') then
        begin
          SimulateKeystroke(VK_PAGEUP, 0);}
        end;
    j:=j+1;
    end;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2011, 16:13
Ответы с готовыми решениями:

Перехват и эмуляция клавиш
Здравствуйте, помогите написать программу которая будет перехватывать нажатие...

Эмуляция вращения колёсика мыши.
Здравствуйте! Требуется реализовать эмуляцию скроллинга в другом приложении....

Эмуляция клика мыши в координату
Программа эмулирует нажатия мыши. С кликом в текущие координаты курсора...

Эмуляция нажатия мыши или кнопки в не актвном окне
Можно ли как нибудь сделать нажатие мыши или клавиши F5 в не активном окне, без...

Запоминание нажатий кнопок и мыши
Как сделать чтобы все нажатия с клавиатуры и мыши посылались в Memo даже если...

5
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.04.2011, 17:18 2
тебе это все проделывать нужно в своем приложении или во всей системе?
если второе то используй hook
0
Astrox
12 / 12 / 2
Регистрация: 20.12.2008
Сообщений: 73
26.04.2011, 23:38  [ТС] 3
Использовать это нужно совсем в другой программе), моя программа будет свернута и должна перехватывать нажатия кнопок и.т.д.
Что за hook? Подробнее пожалуйста. Что это такое и с чем едят. Где почитать, желательно примеры...
0
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
27.04.2011, 00:01 4
http://www.delphimaster.ru/articles/hooks/index.html
1
Astrox
12 / 12 / 2
Регистрация: 20.12.2008
Сообщений: 73
27.04.2011, 16:37  [ТС] 5
Спасибо, почитаю
0
ierecumi
1 / 1 / 0
Регистрация: 15.07.2011
Сообщений: 8
17.07.2011, 12:12 6
тут посмотри!
http://delphi-lubitel.ucoz.ru/load/v...atury/5-1-0-36
1
17.07.2011, 12:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2011, 12:12

Как сделать эмуляцию нажатия кнопок мыши в игре?
Как сделать эмуляцию нажатия кнопок мыши в игре? игра AtomFishing 2 нужно...

Нужны виртуальные коды кнопок мыши, в том числе и скролла
Добрый день\вечер все программистам! Кто мне может подсказать виртуальный код...

Матрица. Вывести сумму строки/столбца по указанию левой/правой кнопок мыши.
Ввести матрицу N*M целых чисел. При указании на элемент матрицы правой клавишей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru