模拟按键问题(50分)

  • 主题发起人 主题发起人 roc
  • 开始时间 开始时间
R

roc

Unregistered / Unconfirmed
GUEST, unregistred user!
我想写一个模拟按键的程序,要求能用键盘的任一键模拟成另一
键,(如用键1模拟成键9),且是全程的即此程序一但运行,对于所
有程序,按1会变成9,请给完整代码.
B
 
把1注册成热键,1按下就模拟9按下.程序关闭释放热键:
private
HotKeyId: Integer;
procedure HotKeyDown(var Msg: Tmessage); message WM_HOTKEY;
procedure TForm1.FormCreate(Sender: TObject);
begin
HotKeyId := GlobalAddAtom('MyHotKey') - $C000;
RegisterHotKey(Handle, hotkeyid, 0, 49);
end;

procedure TForm1.HotKeyDown(var Msg: Tmessage);
begin
if (Msg.LParamHi = 49) then
begin
keybd_event(57, MapVirtualKey( 57, 0 ), 0 , 0 );
keybd_event(57, MapVirtualKey( 57, 0 ), KEYEVENTF_KEYUP , 0 );
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(handle, HotKeyId);
end;
 
把Form的KeyPreview属性设为True;然后
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key='1' then key:='9';
end;
 
//agree fyx
 
roc:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
Fyx 的方法太霸道,它对整个系统都起作用,除非是对系统加热键,否则还是
用我的,这种方法可以细到一个控件。
 
接受答案了.
 
后退
顶部