![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ПОдсажите,как управлять мышкой с клавиатуры?? [D7]
^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]Удалено модератором