| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 422 人关注过本帖
标题:[求助]关于给进程发送一个键盘消息
收藏  订阅  推荐  打印 
wwjazz
Rank: 2
等级:注册会员
帖子:43
积分:528
注册:2006-8-24
[求助]关于给进程发送一个键盘消息

我做了一个DLL的HOOK,我想给我鼠标指定的进程发送一个键盘按下1这个键的消息,可是怎么也弄不了,各位帮帮忙


源程序:


[此贴子已经被作者于2007-4-20 21:26:43编辑过]

附件: 只有本站会员才能下载或查看附件,请您 登录注册
搜索更多相关主题的帖子: 鼠标  进程  键盘  HOOK  
2007-4-20 21:26
Janlex
Rank: 3Rank: 3
等级:中级会员
威望:6
帖子:303
积分:3198
注册:2006-9-12

g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook"),0);
g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("Hook"),0);

第四个参数说明是全局钩子,而全局钩子必须将钩子过程函数放在dll中.

★★★★★欢迎光临我的博客 ★★★★★
http://www.ozd.cn
2007-4-20 22:47
wwjazz
Rank: 2
等级:注册会员
帖子:43
积分:528
注册:2006-8-24

我是钩子过程函数放在dll中了,可是还不行,还有个问题就是,记事本在前台激活状态为什么用快捷键不能启动钩子过程???必须要在有钩子的程序中才能启动钩子,有什么办法可以解决吗?

代码如下:

#include <windows.h>

#pragma data_seg("MySec")
HHOOK g_hMouse=NULL;
HWND g_wnd=NULL;
HHOOK g_hKeyboard=NULL;
HWND g_hWnd=NULL;
#pragma data_seg()


LRESULT CALLBACK MouseProc( int nCode , WPARAM wParam , LPARAM lParam )
{
LPMOUSEHOOKSTRUCT pm = ( MOUSEHOOKSTRUCT FAR*)lParam;
g_wnd = pm -> hwnd;
return CallNextHookEx( g_hKeyboard , nCode , wParam , lParam );;
}

VOID CALLBACK TimerProc ( HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
{
PostMessage ( g_wnd , WM_KEYDOWN , 0x31 , 0 );
}

LRESULT CALLBACK KeyboardProc( int nCode , WPARAM wParam , LPARAM lParam )
{
if(VK_F2==wParam && (1==(lParam>>29&1)))
{
SetTimer ( g_hWnd , 1 , 100 , TimerProc );
}
if(VK_F3==wParam && (1==(lParam>>29&1)))
{
KillTimer ( g_hWnd , 1 );
}
return CallNextHookEx( g_hMouse , nCode , wParam , lParam );
}


2007-4-20 23:40
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.049406 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved