请教大侠:如何在鼠标钩子里判断按键?(100分)

  • 主题发起人 主题发起人 hwave
  • 开始时间 开始时间
H

hwave

Unregistered / Unconfirmed
GUEST, unregistred user!
我安装了鼠标钩子,可以捕捉到鼠标的左右键的单双击,却不知
如何在鼠标钩子里判断这些按键:
ctrl+LBUTTONDOWN
ctrl+alt+LBUTTONDOWN
 
我的目的是:当按下CTRL键再单击(或双击)鼠标
左键,捕获屏幕上鼠标下的文字,送到我的程序中。

function mouseProc(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var h:hwnd;
p:^TMouseHookStruct;
begin
if iCode < 0 then
Result := CallNextHookEx(hNextHookProc, iCode, wParam, lParam)
else
begin
if wParam = WM_LBUTTONDOWN then //只判断了鼠标左键的单击
begin
............................
............................
............................

end;
Result := 0;
end;
end;

请指点迷津,谢谢!
 
GetKeyState(VK_CONTROL) > 0 按下
= 0 未按下。
 
这里有<A Href="www.online.jn.sd.cn">关于Hook的问题</A>
 
试用 if (wParam = WM_LBUTTONDOWN)and(GetKeyState(VK_CONTROL)> 0) then结果
是:按下Ctrl键,松开,再单击鼠标左键,条件成立,并且以后不用按Ctrl键,只
单击鼠标左键条件都成立。
我的意图是按下Ctrl键,不松开,再单击鼠标左键,条件成立。请指点。
 
本人初学DELPHI,请多关照,谢谢大家!
 
因为没弄过 hook, 所以乱说了,对不起。
想。。。
 
(GetKeyState(VK_CONTROL) and $8000)<>0 按下
(GetKeyState(VK_CONTROL) and $8000)=0 没有按下
 
谢谢各位的关照,pipi的方法完全正确,pipi,再次向您请教,这方面的资料
是从那里得到?是MSDN?
 
If the function succeeds, the return value specifies the status of the given virtual key. If the high-order bit is 1, the key is down; otherwise, it is up;

但其他位是什么意思? 我的怎么不行?
 
delphi带来的win32 help都有啦。

supermmx说:其他位是什么意思?

要看清楚一点,它里面还说了最低位:
按一下变 1 ,(松开后也维持)再按一下又变 0 ,
再按一下又变 1 ,再按一下又变 0 ,
再按一下又变 1 ,再按一下又变 0 ,
再按一下又变 1 ,再按一下又变 0 ,
再按一下又变 1 ,再按一下又变 0 ,
再按一下又变 1 ,再按一下又变 0 ,
 
接受答案了.
 

Similar threads

I
回复
0
查看
987
import
I
I
回复
0
查看
597
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部