向explorer.exe注入代码的一个小问题

dhlduda 2008-04-21 05:45:48
我在跟踪一个向exporer.exe注入代码的程序(codeproject上的),所注入代码功能是点击"开始"按钮时左右键功能交换;
问题是:InjectDll函数要向"exporer.exe"中注入代码,为此,调用SetWindowsHookEx函数,此函数的最后一个参数GetWindowThreadProcessId (hWnd,NULL)的第一个参数是"hWnd",而"hWnd"传进来的hwnd确实"开始"按钮的句柄(第12行),
为什么GetWindowThreadProcessId 以hWnd为参数而确获得了exporer.exe的句柄?谢谢
//-------------------------------------------------------------
// InjectDll
// Notice:
// - injects "HookInjEx.dll" into "explorer.exe" (via SetWindowsHookEx);
// - subclasses the START button (see HookProc for more details);
//
// Parameters: - hWnd = START button handle
//
// Return value: 1 - success;
// 0 - failure;
//
1int InjectDll( HWND hWnd )
{
2 g_hWnd = hWnd;

3 // Hook "explorer.exe"
4 g_hHook = SetWindowsHookEx( WH_CALLWNDPROC,(HOOKPROC)HookProc,
hDll, GetWindowThreadProcessId (hWnd,NULL) );
5 if( g_hHook==NULL )
return 0;

// By the time SendMessage returns,
// the START button has already been subclassed
6 SendMessage( hWnd,WM_HOOKEX,0,1 );

7 return g_bSubclassed;
}


8 hStart = ::FindWindow ("Shell_TrayWnd",NULL); // get HWND of taskbar first
9 hStart = ::FindWindowEx (hStart, NULL,"BUTTON",NULL); // get HWND of start button
.....
10 case WM_COMMAND:
11 if( !g_bSubclassed) {
12 InjectDll( hStart );
if( g_bSubclassed )
::SetDlgItemText( hDlg, IDC_BUTTON, "Unmap Dll" );
}
...全文
226 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingli820121 2009-12-15
  • 打赏
  • 举报
回复
DWORD GetWindowThreadProcessId(
HWND hWnd, // handle to window
LPDWORD lpdwProcessId // process identifier
);
该函数返回的是创建hWnd指令的窗口的线程ID,不是进程ID。
进程ID是由lpdwProcessId 得到的。建议楼主 装个MSDN
tianhuo_soft 2008-09-26
  • 打赏
  • 举报
回复
顶 起来 我叶想知道哦啊
dhlduda 2008-04-29
  • 打赏
  • 举报
回复
期待解决啊
dhlduda 2008-04-23
  • 打赏
  • 举报
回复
那位仁兄帮帮忙啊.
programfanny 2008-04-21
  • 打赏
  • 举报
回复
关注,学习
dhlduda 2008-04-21
  • 打赏
  • 举报
回复
更正一下"为什么GetWindowThreadProcessId 以hWnd为参数而确获得了exporer.exe的句柄"写错了,应该是explorer.exe的进程ID:)

682

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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