Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи
Имя
Сообщение << Старые топики   Новые топики >>
Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи - 2005-02-23 12:23:30   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
Написал прогу на дельфи которая по идее должна программно менять состояние клавиш Num Lock Scroll Lock и Caps Lock. Саму то прогу я написал. Компилятор сделал своё дело. Я радостно её {прогу} запустил а она нихрена не делает. В чём может быть дело?
Delphi 8. MS windоws XP Pro без сервис-паков.
Вот сам код:


unit Unit1;

interface

uses
windоws, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Borland.Vcl.ExtCtrls, System.ComponentModel,
Borland.Vcl.StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TоЬjесt);
procedure Timer2Timer(Sender: TоЬjесt);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.nfm}

procedure SetState(key:integer; value:boolean);
var
KeyState:TKeyboardState;
begin
GetKeyboardState(KeyState);
KeyState[key]:=integer(value);
SetKeyboardstate(KeyState);
end;




procedure TForm1.Button1Click(Sender: TоЬjесt);
begin
Timer1.Enabled:=true;
end;

procedure TForm1.Timer2Timer(Sender: TоЬjесt);
begin
Timer1.Tag:=(Timer1.Tag+1) mod 4;
SetState(VK_NUMLOCK, Timer1.Tag=1);
SetState(VK_SCROLL, Timer1.Tag=2);
SetState(VK_CAPITAL, Timer1.Tag=3);
end;

end.

В чём проблема - кто знает?
Post #: 1
Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи - 2005-02-24 14:03:43   
eXploit

Сообщений: 17
Оценки: 0
Присоединился: 2005-01-15 12:37:32
Для изменения состояния клавиш используй API keybd_event.
Описание:VOID keybd_event(BYTE bVk,BYTE bScan,
DWORD dwFlags,DWORD dwExtraInfo);
Использование (консолька в Delphi[sm=1.gif]):

Program Keyled;

{$APPTYPE CONSOLE}

Uses
windоws,SysUtils;
Var
i:Byte;
Begin
i:=0;

Repeat
Inc(i);
keybd_event(VK_NUMLOCK,0,0,0);
Sleep(500);
keybd_event(VK_NUMLOCK,0,KEYEVENTF_KEYUP,0);
Until i>5;

End.

Комментарии,надеюсь,не нужны…[sm=1.gif]
Вот,если нужно, пример на C:

#include <windоws.h>
main(){
int ct,tm,cd;
printf("Enter code of key: ");
scanf("%d",&cd);
printf("Enter frequency: ");
scanf("%d",&tm);
printf("Enter count: ");
scanf("%d",&ct);
Keyled(cd,tm,ct);
}

Keyled(Code,Time,Count)
BYTE Code,Time,Count;
{
int i,Flag;
i=0;
while (i<Count*2) {
Flag=0;
keybd_event(Code,0,Flag,0);
Flag=KEYEVENTF_KEYUP;
keybd_event(Code,0,Flag,0);
Sleep(1000/(Time*2));
++i;
}
}

Post #: 2
Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи - 2005-02-24 20:26:08   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
ок. спасибо. завтра посмотрю.
Post #: 3
Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи - 2005-02-26 03:27:27   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
примерно так (не помню уж всех аргументов)

MessageЬох ("Нажмите пожалуйста клавишу NumLock");

[sm=9.gif]
Post #: 4
Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи - 2005-02-26 17:36:48   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
2rgo f. y. !
2eXploit спасибо. всё сделал.
Post #: 5
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.