进来看看

afterchen 2003-01-21 06:10:11
请问安装鼠标钩子后,怎么得到鼠标所在窗体的进程基地址或进程名称?
...全文
31 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingkee 2003-01-22
  • 打赏
  • 举报
回复
同意JSP的理解。
痞子酷 2003-01-22
  • 打赏
  • 举报
回复
技老大厉害,测试通过!!!
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
TPoint CurPos;
GetCursorPos(&CurPos);
RichEdit1->Lines->Add(GetProgramName(CurPos));
}
珍藏!!!!
shclhs 2003-01-22
  • 打赏
  • 举报
回复
学习
afterchen 2003-01-22
  • 打赏
  • 举报
回复
谢谢各位的指点.我是想当鼠标放到一个窗体上时,先得到此窗体的进程基地址从而截获此进程中所调用的API函数.但我只知道用getmodulehandle()取得进程基地址,但它需要模块名参数.请问大侠是否可以当包含钩子的dll注入其它进程后,取得映射到这个进程虚拟内存里的各个模块(exe和dll)的基地址.
Billy_Chen28 2003-01-21
  • 打赏
  • 举报
回复
主要是用GetWindowThreadProcessId函数
jishiping 2003-01-21
  • 打赏
  • 举报
回复
“怎么得到鼠标所在窗体的进程基地址或进程名称?”
这个和鼠标钩子没有任何关系吧。不知道楼主究竟想要做什么?如果避开鼠标钩子不谈,只说“怎么得到鼠标所在窗体的进程基地址或进程名称”,可以这样做:
#include <tlhelp32.h>

AnsiString GetProgramName(TPoint CurPos)
{
DWORD dwProcessId;
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
AnsiString ExeName;

GetWindowThreadProcessId(WindowFromPoint(
CurPos), &dwProcessId);
hProcessSnap = CreateToolhelp32Snapshot(
TH32CS_SNAPPROCESS, 0);
if (hProcessSnap != (HANDLE)-1) {
memset(&pe32, 0, sizeof(pe32));
pe32.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hProcessSnap,&pe32)) {
do {
if (pe32.th32ProcessID==dwProcessId) {
ExeName = pe32.szExeFile; break;
}
}
while(Process32Next(hProcessSnap,&pe32));
}
CloseHandle(hProcessSnap);
}
return ExeName;
}

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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