function KeyboardHookHandler(iCode: Integer;
wParam: WPARAM;
lParam: LPARAM ): LRESULT; stdcall; export;
const
_KeyPressMask = $80000000;
var
i:integer;
Key_S:String;
begin
Result := 0;
if R_point>0 then
begin
iCode:=-1;
R_point:=R_point-1;
end;
If iCode < 0 Then
begin
Result := CallNextHookEx(DnfNextHook, iCode, wParam, lParam);
Exit;
end; for i:=0 to Key_.Count-1 do
begin
//Key_S[1] 因为ORD()只能读一个字节的英文,所以必须STR的中加上[1]
Key_S:=Key_[i];
if ((lParam and _KeyPressMask) = 0) and //(lparam and $80000000= 0) -->down <>0 --> up;
(wParam = Ord(Key_S[1])) then //这里认的按键只能是大写英文
begin
Result := 1; //Result:=1是表示封杀该按钮的作用,比如在文本中,它应该打印a,但就不出a直接
//做下面的操作,=0 就表示先操作a的作用,在操作下面
Do_Skill(Skill_[i]);
end;
end;
end;其中我的Do_Skill里面是
keybd_event(79, MapVirtualKey(79, 0 ), 0 , 0 );
keybd_event(79, MapVirtualKey(79, 0 ),KEYEVENTF_KEYUP , 0 ); //弹起
sleep(100);模拟按键操作,现在出现问题
在记事本中,可以模拟操作,当我进入QQ聊天的时候,我的模拟按键操作就失效
没有作用,为什么?
是需要截取当前窗口,然后再在窗口中发出按键操作的命令?
如果是,怎么对某个指定窗口发出按键操作命令?
wParam: WPARAM;
lParam: LPARAM ): LRESULT; stdcall; export;
const
_KeyPressMask = $80000000;
var
i:integer;
Key_S:String;
begin
Result := 0;
if R_point>0 then
begin
iCode:=-1;
R_point:=R_point-1;
end;
If iCode < 0 Then
begin
Result := CallNextHookEx(DnfNextHook, iCode, wParam, lParam);
Exit;
end; for i:=0 to Key_.Count-1 do
begin
//Key_S[1] 因为ORD()只能读一个字节的英文,所以必须STR的中加上[1]
Key_S:=Key_[i];
if ((lParam and _KeyPressMask) = 0) and //(lparam and $80000000= 0) -->down <>0 --> up;
(wParam = Ord(Key_S[1])) then //这里认的按键只能是大写英文
begin
Result := 1; //Result:=1是表示封杀该按钮的作用,比如在文本中,它应该打印a,但就不出a直接
//做下面的操作,=0 就表示先操作a的作用,在操作下面
Do_Skill(Skill_[i]);
end;
end;
end;其中我的Do_Skill里面是
keybd_event(79, MapVirtualKey(79, 0 ), 0 , 0 );
keybd_event(79, MapVirtualKey(79, 0 ),KEYEVENTF_KEYUP , 0 ); //弹起
sleep(100);模拟按键操作,现在出现问题
在记事本中,可以模拟操作,当我进入QQ聊天的时候,我的模拟按键操作就失效
没有作用,为什么?
是需要截取当前窗口,然后再在窗口中发出按键操作的命令?
如果是,怎么对某个指定窗口发出按键操作命令?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货