Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Программное изменение состояния клавиш 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.
В чём проблема - кто знает?
|
|
|
Программное изменение состояния клавиш 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; } }
|
|
|
Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи - 2005-02-24 20:26:08
|
|
|
ни разу не дигитал ака свалил
Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
|
ок. спасибо. завтра посмотрю.
|
|
|
Программное изменение состояния клавиш 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]
|
|
|
Программное изменение состояния клавиш Num Lock Caps Lock Scroll Lock в Дельфи - 2005-02-26 17:36:48
|
|
|
ни разу не дигитал ака свалил
Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
|
2rgo f. y. ! 2eXploit спасибо. всё сделал.
|
|
|
|
|