谁有鼠标钩子BCB源代码

sw0324 2001-01-11 11:43:00
谁有鼠标钩子BCB源代码请发给我。
...全文
287 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sw0324 2001-01-16
  • 打赏
  • 举报
回复
to Wingsun:
能否麻烦你再将key.dll源码发给我,我再加100分给你。谢谢!
BCB 2001-01-16
  • 打赏
  • 举报
回复
to Wingsun:
你的水平不要太高噢,果然这样,50分给你加定了,但等我把谜解开:
.DLL才称全局钩子嘛
怪:为什么一访问Form1就会一般保护性错误?我只有一个主线程,鼠标
一移到Form1外,就会出错呢?
Wingsun 2001-01-16
  • 打赏
  • 举报
回复
实在是对不起,程序中写错了,提示的信息应该是Hookmouse.dll not found,不是key.dll。key.dll是我以前写的一个。写发和hookmouse.dll一致,你甚至可以,将他们放在同一个Dll中,只是HOOKPROC应该是keyborad的hook.你可以自己改一下。
你只需要自己定义如下函数,然后调用SetWindowsHookEx安装就可以了。
#define WM_UHOOKKEYBORAD WM_USER+1002
LRESULT CALLBACK KEY_API KeyProc(int nCode,WPARAM wParam,LPARAM lParam)
{
DWORD IsKeyUp;
if(nCode<=0)
{
SendMessage(hwndmain,WM_UHOOKKEYBORAD,0,lParam);
}
return CallNextHookEx(keyhook,nCode,wParam,lParam);
}
Wingsun 2001-01-16
  • 打赏
  • 举报
回复
key.dll的源码不是已经给你了吗,工程的名字叫HookMouse.dsw,DLL为Hookmouse.dll.
我再给你发一次,注意接收。
Wingsun 2001-01-15
  • 打赏
  • 举报
回复
兄弟啊,你安装的是一个全局的MouseHook啊,这可不是局部的啊,安装局部的应该这么写
hook=SetWindowsHookEx(WH_MOUSE,
(HOOKPROC)MouseHook,
NULL,
GetCurrentThreadId());
你不信这么写,然后你在访问Form1的成员,绝对没有问题。
NowCan 2001-01-15
  • 打赏
  • 举报
回复
研究一下。
BCB 2001-01-13
  • 打赏
  • 举报
回复
void DispXY(int x,int y)
{
Form1->Edit1->Text=String(x)+","+String(y);
}
HWND hwnd1,hwnd2; // 存放本窗口句柄
HHOOK hook=NULL; // 存放新钩子句柄
LRESULT CALLBACK MouseHook(int nCode,
WPARAM wParam,
LPARAM lParam)
{ // 为何新钩子内不能访问任何窗口内的对象属性?会崩溃
if (nCode==HC_ACTION)
{
MOUSEHOOKSTRUCT *l=(MOUSEHOOKSTRUCT *)lParam;
if (l->hwnd==hwnd1 || l->hwnd==hwnd2) // 是否本窗口的消息,不能去掉!!!!!!!!!
DispXY(l->pt.x,l->pt.y); // 显示坐标
}
return(CallNextHookEx(hook,nCode,wParam,lParam));
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
hwnd1=Handle; // 存本窗口句柄
hwnd2=Edit1->Handle;// 存Edit1句柄
if (hook==NULL) // 安装新钩子
hook=SetWindowsHookEx(WH_MOUSE,
(HOOKPROC)MouseHook,
HInstance,
0);
}
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if (hook!=NULL)
{
UnhookWindowsHookEx(hook);
hook=NULL; // 卸掉新钩子
}
}
以上这段代码很简单:用鼠标局部钩子在Form1的Edit1上显示鼠标位置,
现在是不出错的,但新钩子MOuseHook中一旦访问Form1的任一属性,只
有鼠标一离开Form1就弹出严重错误,若去消下列判定语句就将出错:
if (l->hwnd==hwnd1 || l->hwnd==hwnd2) // 是否本窗口的消息
或改成:
if (l->hwnd==Form1->Handle)
因为直接访问了Form1,也将出错,所以不得不得用一个hwnd1变量来间接
访问Form1;
大家试试看,只要解决了这个问题满意了,我单独给人加分
BCB 2001-01-11
  • 打赏
  • 举报
回复
我也试过鼠标局部钩子,不知为何在新钩子内部
不能访问Form1的任何属性?如想在Form1->Edit1->Text
显示鼠标的位置,就出现什么严重大错?!咳
Wingsun 2001-01-11
  • 打赏
  • 举报
回复
我有一个,不过DLL是用VC写的。这就给你发过去,注意接收。
BCB 2001-01-11
  • 打赏
  • 举报
回复
我的OICQ刚装了:17461273
因有局域网防火墙,可能不是太畅通
BCB 2001-01-11
  • 打赏
  • 举报
回复
其实没有什么代码,就把截获的鼠标位置
显示到Edit1中,鼠标一离开Form1,就完了,弹出了严重错误提示
Wingsun 2001-01-11
  • 打赏
  • 举报
回复
不知道你是如何写的,我觉得可能是你的程序有问题

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧