SetWindowsHookEx注入问题,很疑惑,大家帮忙,谢谢
cidkr 2011-10-25 05:55:22 原因:
如果我事先打开一个"记事本",那么用
HWND myh=FindWindow(NULL,"无标题 - 记事本");
DWORD tid=GetWindowThreadProcessId(myh,NULL);
::SetWindowsHookEx(WH_KEYBOARD,&nuoya1keyboardproc,::GetModuleHandle("123.dll"),tid);
可以注入成功,而且按HOME键可以呼出窗口.
可是:我如果用CreatdProcess创建一个进程,用得到的 线程ID
来注入,按HOME去没有反应.(就是创建进程之后马上注入)
代码如下:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
si.dwFlags |= STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWMAXIMIZED;
ZeroMemory( &pi, sizeof( pi ) );
if( !CreateProcess( NULL, // No module name (use command line).
"c://windows/notepad.exe", // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
AfxMessageBox( "CreateProcess failed." );
}
DWORD tid=pi.dwProcessId;
::SetWindowsHookEx(WH_KEYBOARD,&nuoya1keyboardproc,::GetModuleHandle("123.dll"),tid);
请教下各位,这是什么原因,要怎么解决..按理来说,创建进程,而且马上注入,没什么问题啊