keybd_event(VK_NUMLOCK,0,0,0);
//on appuie sur la touche
keybd_event(VK_NUMLOCK,0,keyeventf_keyup,0); //pour le changer
end
else}
// Showmessage('probablement pas de numpad'+ inttostr(clavier));
end;
Il me semble que j'ai une source ou un lien sur le sujet mais je
n'arrive pas à mettre la main dessus. Je fais des recherches
approfondies sur mon disk et je reviens vers toi si je trouve quelque
chose.
yvemoreau
Messages postés308Date d'inscriptionmardi 11 juin 2002StatutMembreDernière intervention26 septembre 2008 8 sept. 2005 à 04:01
bon j'avais pensé à un hook du clavier mais ça fonctionne...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes,
Forms,Controls, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
end;
function KeyboardProc(nCode: Integer; wParam: WPARAM;
lParam: LPARAM): LResult; stdcall;
var
Form1: TForm1;
WinHook: HHOOK;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
WinHook:=SetWindowsHookEx(WH_KEYBOARD,
@KeyboardProc,
0,
GetCurrentThreadID);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(WinHook);
end;
function KeyboardProc(nCode: Integer; wParam: WPARAM;
lParam: LPARAM):LRESULT; stdcall;
var
KeyState: TKeyboardState;
begin
if nCode = HC_ACTION then
begin
GetKeyboardState(KeyState);
case wParam of
65..90{A..Z},
97..122{a..z},
170..223,
224..255,
256..382,
383..511: //YEN A PEUT-ÊTRE D'AUTRES ?
begin
{ KeyState[16]:=0;//shift
KeyState[20]:=0;//verrMaj
WINDOWS.SetKeyboardState(KeyState); }
//ici tout en lower case
KeyState[16]:=128;
KeyState[20]:=128;
SetKeyboardState(KeyState);
//ici tout en UPPER CASE
end;
end;
end;
Result := CallNextHookEx(WinHook, nCode, wParam, lParam);
end;