Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ПОдсажите,как управлять мышкой с клавиатуры?? [D7]


Страницы:   1 2

^G^ ©   (2004-05-12 14:32:00) 

Подскажите!Мне нужно эмитировать как бы работу мышки с клавиатуры.Т.е. движение курсора стрелками,нажатие правой левой кнопки мыши задать с помощью кнопок клавы.
Но пожалуйста объясняйтесь пожалуйста понятней т.к. я в этом деле пока не разобралась.


IraiZor   (2004-05-31 19:19:00) [1]

то же что из кнопкой ,тока не нужна проверка на координаты.


^GENTLY^   (2004-05-31 18:13:00) [2]

Ой а какой функцией сделать чтоб отображалось такоеже меню как при нажатии правой кнопки мышки.


Iraizor   (2004-05-31 11:07:00) [3]

^GENTLY^
вообще-то эмулировать нажатие кнопки в пределах формы можно оч просто :
допустим юзер нажал на кнопку vk_F1  тогда проверяются текущие координаты курсора и если они совпадают с координатоми какой либо-кнопки х+_ длина у+_ширина ,то можно просто вызывать процедуру обработки нажатия кнопы +) примитивно и не эффективно , когда на форме 10^2 кнопок ++) ,но в принципе при инициализации проги мона заносить в массивы координаты кнопки , и прочую ерунду, а потом брать оттуда.
РS
WinApi - Windows Application Program Interface , вроде


^GENTLY^   (2004-05-30 23:57:00) [4]

Help!!!


^GENTLY^   (2004-05-24 20:25:00) [5]

Удалено модератором
Примечание: Дубль


^GENTLY^   (2004-05-24 20:21:00) [6]

Я студентка, и это лабораторная по Api ,нужно сделать такую прогу.
Скажите ,а если делать перемещение курсора  не во всей системе,а только в опр.программе там используются Api ф-и, а если во всей системе ,то WinApi? Если так должно быть мне надо реализовать только в опр .проге.А значит наверно не надо хук ставить и напимер перемещение курсора можно сделать с помощью  SetCursorPos(FCursorPos.X, FCursorPos.Y) ведь это Ари ф-я??Но как тогда эмитировать нажатие пр лв кнопок.???


Игорь Шевченко   (2004-05-24 19:05:00) [7]


> Accessability хм,а что это?


В русской версии Windows "Специальные возможности".

Я бы хотел узнать ответ на вопрос "зачем это нужно?"


^GENTLY^   (2004-05-24 18:56:00) [8]

Accessability хм,а что это?
Может вы знаете сайт где можно найти информацию о хуке,что это и как пользоваться.Ведь стправка на английском.


Игорь Шевченко   (2004-05-24 18:19:00) [9]

^GENTLY^   (24.05.04 17:59)

Не вижу смысла изобретать Accessability, это не такая простая задача, и непонятно, какой смысл в этом. На всякий случай - взаимодействие с Accessability происходит через функцию SetWinEventHook


^GENTLY^   (2004-05-24 17:59:00) [10]

Да и не только перемещение курсора,но и теже действия, что происходят по нажатию на правую и левую кнопку мышки должны происходить по нажатию на опр.кнопку на клавиатуре.Напр. правая + левая - лево право вверх вниз -курсоры.


Игорь Шевченко   (2004-05-24 17:45:00) [11]

^GENTLY^   (24.05.04 17:16)

А в чем, собственно, состоит задача ? Чтобы во всей системе перемещение курсора выполнялось с клавиатуры, а не мышью ?


^GENTLY^   (2004-05-24 17:16:00) [12]

Спасибо большое.
Попробовала работает только на форме.Чтоб без активной формы работало надо для этого ВинАпи да?НУжно хуки ставить говорят, только как?никак не разбирусь.


LMD   (2004-05-21 21:25:00) [13]

Вот пример на VCL, если поймешь суть, можно и на API переписать:
(Только перемещение курсора)


unit main;

interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms;

type
 TForm1 = class(TForm)
   procedure FormKeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
   procedure FormCreate(Sender: TObject);
 private
   FCursorPos: TPoint;
   procedure ChangeCursorPos;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 case Key of
 VK_LEFT:
   Dec(FCursorPos.X);
 VK_RIGHT:
   Inc(FCursorPos.X);
 VK_UP:
   Dec(FCursorPos.Y);
 VK_DOWN:
   Inc(FCursorPos.Y);
 else
   Exit;
 end;
 Key := 0;
 ChangeCursorPos;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 FCursorPos := ClientToScreen(Point(ClientWidth div 2, ClientHeight div 2));
 ChangeCursorPos;
end;

procedure TForm1.ChangeCursorPos;
begin
 SetCursorPos(FCursorPos.X, FCursorPos.Y);
end;

end.


Свойство KeyPreview у форму установлено в True.

Удачи!


^GENTLY^   (2004-05-21 19:03:00) [14]

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


LMD   (2004-05-21 01:14:00) [15]


> а можно для начала,вот как вообще что нужно чтоб прога работала
> в самом винд ,т.е. обычно унас открывается какое-то окно
> проги а тут ведь его не должно быть.Мне сложно понять то
> что вы написали,я не знаю с чего начать как применить написанное
> вами.


Тогда может быть рано исходную задачу решать ?


^G^   (2004-05-20 22:18:00) [16]

Спасибо вам большое за помощь. а можно для начала,вот как вообще что нужно чтоб прога работала в самом винд ,т.е. обычно унас открывается какое-то окно проги а тут ведь его не должно быть.Мне сложно понять то что вы написали,я не знаю с чего начать как применить написанное вами.
Я не знаю английского, :%(:(:(:(::(


Rouse_   (2004-05-17 01:43:00) [17]

> buttondown
Угу, главное buttonup не забыть - это если "нажатие кнопок" ;)


Diamond Cat   (2004-05-17 01:37:00) [18]

перемещать курсор setcursorpos
нажатие кнопок мыши
sendmessage(windowfrompoint...wm_l/r/m/и т.д. buttondown
или
sendinput


^G^   (2004-05-15 14:18:00) [19]

Спасибо будем пытаться разобраться в написанном.(:(::(:(:))


  (2004-05-14 00:28:00) [20]

Удалено модератором


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо