HOOK求救,钩子函数

vcx 2000-08-28 11:42:00
我简单测试了一个全局鼠标钩子函数,但它却无法运作,编辑框中无任何显示,请高手帮忙看一下问题出在哪里,谢谢!
主程序中安装钩子:
BOOL CHookDlg::OnInitDialog()
{
CDialog::OnInitDialog();

......

Cmyhook m_hook;
CWnd *pwnd=GetDlgItem(IDC_EDIT1);
m_hook.starthook(pwnd->GetSafeHwnd());

......

}

钩子函数的DLL:
#include "stdafx.h"
#include <afxdllx.h>


#pragma data_seg("mydata")
HWND glhDisplayWnd=NULL; //显示目标窗口标题编辑框的句柄
HHOOK glhHook=NULL; //安装的鼠标勾子句柄
HINSTANCE glhInstance=NULL; //DLL实例句柄
#pragma data_seg()
#pragma comment(linker,"/section:mydata,rws")


static AFX_EXTENSION_MODULE MyhookDLL = { NULL, NULL };

extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{

......

glhInstance=hInstance;

......

}

LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
char *szCaption="kkkkk";
SendMessage(glhDisplayWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)szCaption);
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}


BOOL Cmyhook::starthook(HWND hWnd)
{
glhHook=SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);
glhDisplayWnd=hWnd;
}


...全文
273 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sunlet 2000-10-07
  • 打赏
  • 举报
回复
ATTENTION
lgs 2000-10-07
  • 打赏
  • 举报
回复
将SendMessage函数改为SetWindowText函数。
lgs 2000-10-07
  • 打赏
  • 举报
回复
将SendMessage函数改为SetWindowText函数。
lgs 2000-10-07
  • 打赏
  • 举报
回复
首先要确保窗口句柄有效,这里
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
char *szCaption="kkkkk";
SendMessage(glhDisplayWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)szCaption);
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}
进程间的消息传递,只有WM_COPYDATA消息,对方才能接收到附加参数,不要用SendMessage函数来发送消息,你可以直接用SetWindowText()API函数完成。
lgs 2000-10-07
  • 打赏
  • 举报
回复
首先要确保窗口句柄有效,这里
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
char *szCaption="kkkkk";
SendMessage(glhDisplayWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)szCaption);
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}
进程间的消息传递,只有WM_COPYDATA消息,对方才能接收到附加参数,不要用SendMessage函数来发送消息,你可以直接用SetWindowText()API函数完成。
lgs 2000-10-07
  • 打赏
  • 举报
回复
首先要确保窗口句柄有效,这里
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
char *szCaption="kkkkk";
SendMessage(glhDisplayWnd,WM_SETTEXT,0,(LPARAM)(LPCTSTR)szCaption);
return CallNextHookEx(glhHook,nCode,wparam,lparam);
}
进程间的消息传递,只有WM_COPYDATA消息,对方才能接收到附加参数,不要用SendMessage函数来发送消息,你可以直接用SetWindowText()API函数完成。
a2000 2000-08-29
  • 打赏
  • 举报
回复
VCX:关注问题解决后,能告诉我如何解决的,好吗!
EMAIL:A2000CHINA@YEAH.NET
Areslee 2000-08-29
  • 打赏
  • 举报
回复
检查一下glhDisplayWnd是否为要求的控制句柄。
Areslee 2000-08-29
  • 打赏
  • 举报
回复
你没有对glhDisplayWnd赋值啊,这样消息当然发不过去了。
oceancat 2000-08-29
  • 打赏
  • 举报
回复
我覺得回調函數有點問題
我原來寫過一個全局的hook
跟你的差不多
就是回調函數不太一樣
你把回調函數寫完整
再看看


16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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