vous pouvez Programmatically obtenir et définir l'état des touches Verr en utilisant la fonction keybd_event
essayez ceci:
var
KeyState: TKeyboardState;
begin
GetKeyboardState(KeyState) ;
if (KeyState[VK_CAPITAL] = 0) then
begin //simulate key down
Keybd_Event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or 0, 0) ;
Keybd_Event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0) ;
end
else
begin //simulate key up
Keybd_Event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or 0, 0) ;
Keybd_Event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0) ;
end;
si vous voulez vraiment désactiver une clé (que je ne recommande pas), vous pouvez utiliser cette bibliothèque appelée BlockKeys (je l'ai trouvé à la bibliothèque BlockKeys http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_21504230.html):
library BlockKeys;
uses
Windows,
Messages;
{$R *.RES}
var
hKeyHook: THandle = 0;
Hooked: Boolean = False;
function HookFunc(Code, VirtualKey, KeyStroke: Integer): Integer; stdcall;
begin
if VirtualKey in [VK_TAB, VK_CONTROL, VK_MENU, VK_ESCAPE, VK_F1] then
Result := 32
else
Result := CallNextHookEx(hKeyHook, Code, VirtualKey, KeyStroke);
end;
function StartHook: Boolean; export;
begin
Result := False;
if Hooked then
begin
Result := True;
Exit;
end;
hKeyHook := SetWindowsHookEx(WH_KEYBOARD, HookFunc, hInstance, 0);
if hKeyHook <> 0 then
begin
Result := True;
Hooked := True;
end;
end;
function StopHook: Boolean; export;
begin
if Hooked then
Result := UnhookWindowsHookEx(hKeyHook)
else
Result := True;
if Result then Hooked := False;
end;
exports
StartHook,
StopHook;
begin
end.
espérons que cette aide
whoa. C'est beaucoup de travail. Merci de répondre. Est-ce que cela fonctionne sur XP? Je vais essayer de faire ça à delphi et le modifier à partir de là. – Dian
oui, mais vous serez ninja :) –
Quelle partie se qualifie pour le statut "ninja"? Traduire le code C en Delphi, ou adapter le code pour travailler sous Windows XP? Si le premier, alors vous devez repenser votre système de notation parce que ce code est assez simple. Dans ce dernier cas, pourriez-vous décrire certains des obstacles auxquels Dian et d'autres seraient confrontés pour que le code fonctionne dans les versions ultérieures de Windows? –