先问下这里怎么不用buttonclicked另外if(SetHook(TRUE, dlg.m_dwThreadId, m_hWnd))
{
m_bOpen = TRUE;
m_bPause = FALSE;
}
这个是dll中的 SetHook 吗?如果不是,那为什么不直接用dll中的呢BEGIN_MESSAGE_MAP(CMainDialog, CDialog)
// 按钮的单击事件
ON_BN_CLICKED(IDC_TARGET, OnTarget)
ON_BN_CLICKED(IDC_PAUSE, OnPause)
ON_BN_CLICKED(IDC_CLEAR, OnClear)
ON_BN_CLICKED(IDC_TOPMOST, OnTopMost)
ON_BN_CLICKED(IDC_CLOSE, OnClose)
// 列表视图的单击和删除事件
ON_NOTIFY(NM_CLICK, IDC_LISTDATA, OnClickListData)
ON_NOTIFY(LVN_DELETEITEM, IDC_LISTDATA, OnDeleteItemList)
// 两个自定义消息
ON_MESSAGE(HM_RECEIVE, OnReceive)
ON_MESSAGE(HM_SEND, OnSend)
END_MESSAGE_MAP()
void CMainDialog::OnTarget()
{
CEnumProcessDlg dlg(this);
// 弹出选择进程对话框
if(dlg.DoModal() == IDOK)
{
// 如果为其它进程安装了钩子,先卸载
if(m_bOpen)
{
SetHook(FALSE);
InitData();
}
// 为用户选择进程的主线程安装钩子
if(SetHook(TRUE, dlg.m_dwThreadId, m_hWnd))
{
m_bOpen = TRUE;
m_bPause = FALSE;
}
else
{
MessageBox(" 安装钩子出错!");
}
}
// 更新用户界面
UIControl();
}
BOOL SetHook(BOOL bInstall, DWORD dwThreadId = 0, HWND hWndCaller = NULL)
{
// 定义导出函数的类型
typedef (WINAPI *PFNSETHOOK)(BOOL, DWORD, HWND);
// 导出函数的DLL文件名。调试时可设置为../10IPPackLib/debug/10IPPackLib.dll
char szDll[] = "10IPPackLib.dll"; // 加载DLL模块
BOOL bNeedFree = FALSE;
HMODULE hModule = ::GetModuleHandle(szDll);
if(hModule == NULL)
{
hModule = ::LoadLibrary(szDll);
bNeedFree = TRUE;
} // 获取SetHook函数的地址
PFNSETHOOK mSetHook = (PFNSETHOOK)::GetProcAddress(hModule, "SetHook");
if(mSetHook == NULL) // 文件不正确?
{
if(bNeedFree)
::FreeLibrary(hModule);
return FALSE;
} // 调用SetHook函数
BOOL bRet = mSetHook(bInstall, dwThreadId, hWndCaller); // 如果卸载,释放上面加载的模块
if(!bInstall)
::FreeLibrary(hModule); return bRet;
}
解决方案 »
- 新手求助如何在MFC中添加的按钮控件上面显示一幅位图
- 如何确认对网络上的计算机有写的权限?
- ftp上传时,通过数据通道发送数据如果通道不关闭为什么就接收不到(在线等待……)
- 一个程序原先使用的数据库是ACCESS,现在要移植成SQL SERVER,请问有这两种数据库的SQL语句是否兼容
- 全屏的时候怎么隐藏最下面的开始菜单?
- 为什么QQ的信息能进入局域网内部的机子?
- 一个很有挑战性的问题哦,高手请进
- 一个简单的问题。。
- 有关于ID_FILE_OPEN使用问题 急!急!急!!!
- ?:开发了一套《医药行业销售系统》,有没有人对这个有兴趣??
- 双击文件后,如何判断该文件的类型并用相应的软件打开
- 为什么我的vc的find in files 无效了呢
// 定义导出函数的类型
typedef (WINAPI *PFNSETHOOK)(BOOL, DWORD, HWND);
// 导出函数的DLL文件名。调试时可设置为../10IPPackLib/debug/10IPPackLib.dll
char szDll[] = "10IPPackLib.dll";
因为dll中的这个SetHook还没有导出来,你自己调用呢??除非你先导出来