我定义了一个全局的鼠标钩子
基本上的功能是没有什么问题的
但是,现在还想解决两个细节问题:
1、我想让只鼠标消息发送到我的窗口,然后把它丢掉,该怎么办?
(关键是如何让消息不发送到它原来的窗体,直接丢掉)
2、我想让鼠标的光标形状变成手型光标,该怎么做?
(我试过用Screen.Cursor:=crHandPoint是不行的)
基本上的功能是没有什么问题的
但是,现在还想解决两个细节问题:
1、我想让只鼠标消息发送到我的窗口,然后把它丢掉,该怎么办?
(关键是如何让消息不发送到它原来的窗体,直接丢掉)
2、我想让鼠标的光标形状变成手型光标,该怎么做?
(我试过用Screen.Cursor:=crHandPoint是不行的)
解决方案 »
- idtcpserver 多线程连接数据库
- 散分200分,本人12.17结婚
- 关于Indy TCP传输文件的简单问题
- 欲编一个测试打字速度的小软件,求测每分钟打字速度的公式!(200分相送。)
- 怎样在一个时间段内进行查询?
- 不爽,晕死,散!
- 这两天花钱如流水,只能问这一个问题了!打印操作中的dpi,canvas计算、添加自定义纸。
- 怎样动态的建立一个类型文件,文件的类型是程序运行时,由用户动态的输入而得到的。
- 在delphi6中编的东西不能在delphi5中用了呢:~
- 怎麽做字段不固定的报表????
- 哪位有ehlib 2.6的源码(含dbgrideh.pas),200分相送
- 为什么我的程序在运行过程中会突然找不到打印机?(QuickReport),在线等待!!!急急
SetCursor(hCursor);
一切OK!
比如:result:=1;
感觉并不是全局的,我的钩子函数和过程是写在DLL里的,帮忙看看
//处理MouseHOOK的函数
function MouseHookHandler(icode:integer;wparam:wparam;lparam:lparam):lresult;stdcall;export;
var
MP:PMouseHookStruct;
begin
if iCode < 0 then
Result := CallNextHookEx(MouseNextHookProc, iCode, wParam, lParam)
else begin
if (wParam=WM_MOUSEMOVE) then begin //只处理鼠标移动消息
MP := PMouseHookStruct(lparam);
Form1.Caption := inttostr(MP^.pt.X)+' '+inttostr(MP^.pt.Y);
//PostMessage(GlobalData.hHandle,WM_MOUSEHOOK,MP^.pt.X,MP^.pt.Y); //把坐标传过去
end;
iCode:=-1;
Result := CallNextHookEx(MouseNextHookProc, iCode, wParam, lParam); //调用下一个函数
end;
end;function SetMouseHook:bool;export;
begin
Result := False;
if MouseNextHookProc <> 0 then Exit;
MouseNextHookProc := SetWindowsHookEx(WH_MOUSE,MouseHookHandler,HInstance,0);
Result := MouseNextHookProc <> 0; Form1 := TForm1.Create(nil);
Form1.Show;
end;function EndMouseHook:bool;export;
begin
if MouseNextHookProc <> 0 then
begin
UnhookWindowshookEx(MouseNextHookProc);
MouseNextHookProc := 0;
MessageBeep(0);
end;
Result := MouseNextHookProc = 0;
Form1.Close;
Form1.Free;
end;