简单的E转Delphi 100

功能:拦截鼠标消息使用到的API:CallWindowProcA,GetWindowLongASetWindowLongA求用这三个API写一个简单的拦截鼠标消息的源代码... 功能 : 拦截鼠标消息
使用到的API :CallWindowProcA,GetWindowLongASetWindowLongA
求用这三个API写一个简单的拦截鼠标消息的源代码,
要不然也可以根据以下易语言代码 转换成Delphi代码, 其实我会,就是不知道 在Delphi中 到整数(& 子程序) 这段如何表示!
代码图

本人现有219财富值 ,有可以帮到我的,219我全部送上。注意 是把以上易语言代码转换成Delphi代码。
展开
 我来答
ayi033
2013-10-16 · TA获得超过144个赞
知道小有建树答主
回答量:317
采纳率:100%
帮助的人:110万
展开全部
在Delphi中你可以直接在窗体添加成员函数来截取鼠标在窗体的操作;例如
Procedure WMMOUSEMOVE(Var Message:TWMMOUSEMOVE); message WM_MOUSEMOVE;
//鼠标在窗体上移动
Procedure WMLBUTTONDOWN(Var MSG:TWMLBUTTONDOWNN); Message WM_LBUTTONDOWN;
//鼠标按下消息过程
............
也可以直接重载 WndProc过程;
Procedure WndProc(var Message:TMessage);
在过程判断消息属性..不需要用到API替换窗体原消息函数;
如果必须要用API的话的话
在当前单元引用 Windows 单元
添加一个你的窗体函数:
Type
TMyWindowProc = Function (Wnd:HWND; Msg: Uint; wParam:WPARAM; lParam:LPARAM):HResult;stdcall;

............//你定义的其他的东西
//添加一个你的处理过程
Function MyWndProc(Wnd:HWND; Msg: Uint; wParam:WPARAM; lParam:LPARAM):HResult;stdcall;

var
OldWndProc:TMyWindowProc;
......//你自己的其他变量
implementation

Procedure ChangWndWndProc(Wnd:HWND);
begin
OldWndProc:= GetWindowLong(Wnd,GWL_WNDPROC);//读取窗体原来的窗体事件并保存
SetWindowLong(Wnd,GWL_WindProc,Integer(@MyWndProc));//设置新的地址;
//易语言"到整数(&鼠标被按下事件)“就等同于这里的Integer(@MyWndProc),也就是强制将地址转换为整形数.
end; //Delphi 默认对GetWindowLongA 等其他函数的A去掉了,你到Windows看就会明白他们是同一个API

Function MyWndProc(Wnd:HWND; Msg: Uint; wParam:WPARAM; lParam:LPARAM):HResult;
begin
// 在这里处理你的东西
//Do something...

//最后要调用原来的过程
CallWindowProc(@OldWndProc,Wnd,Msg,wParam,lParam);
end;
///Tips:所有回答都是手打的,可能会有错误的地方,作为参考,不能直接复制使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式