WEB开发网
开发学院软件开发VC VC实现的MSN Messager钩子程序 阅读

VC实现的MSN Messager钩子程序

 2007-03-18 21:28:08 来源:WEB开发网   
核心提示: 上面是处理钩子的DLL代码,下面我们要让这个DLL起作用还需要一个启动部分,VC实现的MSN Messager钩子程序(3),通过这个启动部分我们才能让我们的钩子函数真正的注入到系统其他函数中,我们这里使用个对话框的程序,一个TIMER用来刷新显示,还有一个EDITBOX用来接受信息,程序

上面是处理钩子的DLL代码,下面我们要让这个DLL起作用还需要一个启动部分,通过这个启动部分我们才能让我们的钩子函数真正的注入到系统其他函数中。我们这里使用个对话框的程序,程序非常简单:一个按钮用来启动钩子,一个用来停止,一个TIMER用来刷新显示,还有一个EDITBOX用来接受信息。

程序如下:

//包含DLL函数导出的头文件
#include "MSNHook.h"
//隐式导入
#pragma comment(lib,"MSNHook.lib")
//声明导入函数
__declspec(dllimport) BOOL WINAPI SetMsnHook(DWORD dwThreadId);
__declspec(dllimport) void WINAPI GetText(int &x,int &y,char ** ptext);
__declspec(dllimport) HWND WINAPI GetMyHwnd();//安装MSN钩子函数
void CTestMSNHookDlg::OnBnClickedOk()
{
//通过SPY++可以看到MSN聊天对话框窗口类是IMWindowClass,通过这个得到该窗口句柄
CWnd *pMsnWin = FindWindow(TEXT("IMWindowClass"),NULL);
if(pMsnWin == NULL) return ;
//通过窗口句柄得到对应的线程的ID
SetMsnHook(GetWindowThreadProcessId(pMsnWin->GetSafeHwnd(),NULL));
MSG msg;
GetMessage(&msg,NULL,0,0);
SetTimer(101,100,NULL);
}
void CTestMSNHookDlg::OnTimer(UINT_PTR nIDEvent)
{
//刷新消息
char * pText = NULL;
int x = 0,y = 0;
GetText(x,y,&pText);
if(x ==0 && y ==0) return ;
m_Edit.Format("%d:%d:%s",x,y,pText);
//m_Edit = pText;
UpdateData(FALSE);
HWND hWnd = GetMyHwnd();
CWnd * pWnd = CWnd::FromHandle(hWnd);
pWnd->GetWindowText(m_Edit);
CDialog::OnTimer(nIDEvent);
}
void CTestMSNHookDlg::OnBnClickedButton1()
{
//关闭
KillTimer(101);
SetMsnHook(0);
OnCancel();
}

上一页  1 2 3 

Tags:VC 实现 MSN

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接