Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2008, 19:16   #1
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
Лампочка манипуляция клавишей

Как сделать так чтоб по событию онТаймер нажималась\отпускалась клавиша?
)Игнат( вне форума Ответить с цитированием
Старый 22.01.2008, 19:18   #2
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

физически на клавиатуре?
OnKeyPress
dron-s вне форума Ответить с цитированием
Старый 22.01.2008, 19:51   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Если вы имеете в виду эмуляцию нажатия/отпускания клавиши, опишите этот процесс, например:
Код:
procedure Tfmain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
...что-то делаем
end;
а потом ссылайтесь на него, например:
FormKeyDown(nil, (значение клавиши в формате WORD),[]);
mihali4 вне форума Ответить с цитированием
Старый 22.01.2008, 23:04   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

SendMessage(Edit1.Handle,WM_KEYDOWN ,VK_LEFT,0);
посылаем в Edit1, что "на нем" нажали стрелку влево
pu4koff вне форума Ответить с цитированием
Старый 23.01.2008, 21:21   #5
Zevseg
 
Аватар для Zevseg
 
Регистрация: 30.11.2007
Сообщений: 5
По умолчанию

Впринципе в место w можно писать номер клавиши которую нужно нажать ж). Так же значение клавиши будет зависеть от текущей раскладки ж)

setkey(form1,w);

В данном примере при Вашем условие наберется слово Привет ж) если раскладка клавиатуры будет русской ж)

Код:
{Процедура имитирования нажатия клавиши}
procedure TForm1.SetKey(Sender: TObject; key:integer);
begin
  keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0);
  keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;

{пишет в строке ввода (если доступно) то что вы хотите :)) }

procedure TForm1.Button1Click(Sender: TObject);
var w,i:word;
s:string;
Layout: array[0.. KL_NAMELENGTH] of char;
begin
s:='Ghbdtn'; //пишем что надо послать по русски анг буквами;
if <условие при котором произойдет имитация написания слова "привет"> then
begin
  for i:=1 to length(s) do
  begin
  w:=VkKeyScan(s[i]);
  setkey(form1,w);
end;
end;
end;
Caps Lock - Запереть шашки
Zevseg вне форума Ответить с цитированием
Старый 24.01.2008, 16:06   #6
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию

я вижу не все понятно написал, исправлюсь: Как конкретно по событию onTimer зажималась\отпускалась клавиша(програмно)???Ну илипросто как по какому-нить событию

Последний раз редактировалось )Игнат(; 24.01.2008 в 16:13.
)Игнат( вне форума Ответить с цитированием
Старый 24.01.2008, 16:15   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от )Игнат( Посмотреть сообщение
я вижу не все понятно написал, исправлюсь: Как конкретно по событию onTimer зажималась\отпускалась клавиша(програмно)???Ну илипросто как по какому-нить событию
В каком окне/потоке? "зажималась\отпускалась" это WM_KEYDOWN/WM_KEYUP (возможно даже WM_SYSKEYDOWN/WM_SYSKEYUP)
B_N вне форума Ответить с цитированием
Старый 24.01.2008, 16:51   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как конкретно по событию onTimer зажималась\отпускалась клавиша(програмно)???Ну илипросто как по какому-нить событию
Уже сказали:
Код:
 
  keybd_event(<Код клавишы>,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);   
  keybd_event(<Код клавишы>,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
Это выполнять в таймере.

Есть еще вариант использовать SendInput
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.01.2008, 17:03   #9
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию

Чето ничего не понял, поясните плиз толком что есть что!!!!И кто знает как в делфи называетс CAPS LOCK???

Последний раз редактировалось )Игнат(; 24.01.2008 в 18:16.
)Игнат( вне форума Ответить с цитированием
Старый 24.01.2008, 18:18   #10
)Игнат(
Форумчанин
 
Регистрация: 06.01.2008
Сообщений: 180
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
SendMessage(Edit1.Handle,WM_KEYDOWN ,VK_LEFT,0);
посылаем в Edit1, что "на нем" нажали стрелку влево
А как послать это нажатие в систему? ну чтоб она не где-то нажималась, а везде?
)Игнат( вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц