社区
C++ Builder
帖子详情
谁有鼠标钩子BCB源代码
sw0324
2001-01-11 11:43:00
谁有鼠标钩子BCB源代码请发给我。
...全文
287
12
打赏
收藏
谁有鼠标钩子BCB源代码
谁有鼠标钩子BCB源代码请发给我。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
不知道你是如何写的,我觉得可能是你的程序有问题
键盘与
鼠标
钩子
程式源码
在
BCB
5.0下开发的键盘与
鼠标
钩子
程式源码
日志
钩子
代码
使用
bcb
2010写的一个小程序(练习),采用日志
钩子
,记录键盘代码,生成键盘记录文件。有兴趣的可以参考一下。很多地方还不是很完善,你可以自己去完善。
C++builder HOOK 简单实例
鼠标
计数器【供初学者使用】
是本人初学hook时写的,很简单,一个dll,一个Main,思路清晰,简洁易懂,装了
BCB
6.0的用户【XP SP2】能直接编译,希望对大家有所帮助
BCB
鼠标
钩子
Hook技术实现指南
Windows操作系统中的
钩子
(Hook)机制是系统提供的一种用于监视系统或应用程序中的各种事件消息,以便进行拦截和处理的机制。它常被用于实现如键盘输入记录、
鼠标
动作捕捉等底层系统功能。
钩子
本质上是一个处理系统消息的回调函数,它可以设置在系统的消息处理链中的特定点,当系统传递消息到这个点时,
钩子
程序可以先于目标窗口接收到消息,并进行相应的处理。为了便于理解,可以把Windows
钩子
机制类比于现实生活中的钓鱼
钩子
。
BCB
的一些技巧
1. C++ Builder网上资源 C++ Builder研究 http://www.ccrun.com/ C++ Builder程序员 http://my
bcb
.diy.myrice.com/ 电脑学习C++ Builder版块 http://www.itcomputer.com.cn/Programs/C/CB/ c++ Builder快捷键大全: http://www.itco...
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章