模拟键盘问题(50分)

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

rebeccarice

Unregistered / Unconfirmed
GUEST, unregistred user!
我修改了HookTest 的例子,并用了 sendkeys 函数:

function KeyboardHookHandler(iCode: Integer;
wParam: WPARAM;
lParam: LPARAM): LRESULT; stdcall; export;
const
_KeyPressMask = $80000000;

begin
Result := 0;
If iCode < 0 Then
begin
Result := CallNextHookEx(hNextHookProc, iCode, wParam, lParam);
Exit;
end;
// 盎代 Ctrl + B 舱?龄
if ((lParam and _KeyPressMask) = 0) and
//(GetKeyState(vk_Control) < 0) and (wParam = Ord('B')) then
(GetKeyState(VK_F11) < 0 ) then
begin
//if AppActivate('Notepad') then
begin
SendKeys('abc123{left}{left}{left}def{end}456{left 6}ghi{end}789', True);
end;
//Result:=CallNextHookEx(hNextHookProc, iCode, wParam, lParam);
Result := 1;
//WinExec('Notepad.exe', sw_Normal); // 癘ㄆセ
end;
end;

但是,输出的东西并不是正确的,应该输出‘abcdefghi123456789’但是实际上输出了很多遍,
并且每次不确定。
另外,我用keybd_event 函数,也是一样的结果,不知道为什么?

另外,sendkeys 函数如何模拟 Ctrl+N 等组合键?鼠标双击呢?
 
SendKeys('^N');
PostMessage(Handle,BN_DOUBLECLICKED,0,0);
 
直接发一个EventMSG过去。
 
能否说的清楚一些?
 
后退
顶部