从注入的dll向进程窗口发送键盘消息的有关问题
从注入的dll向进程窗口发送键盘消息的问题
我写了一个带对话框资源的dll,用hook的方式注入到一个进程,然后在对话框上添加一个按钮,点击按钮的时候就向被注入的进程窗口发送键盘H按下的消息,可是不成功,用记事本测试,h没有输入进去。
哪位大侠帮忙看看问题在哪呢?
代码如下:
HWND FindProcessWindow(DWORD processID)
{
s_hWnd = 0;
EnumWindows(EnumWindowsProc, processID);
return s_hWnd;
}
void CMainDlg::OnBnClickedButton1()
{
//TODO: 在此添加控件通知处理程序代码
DWORD a= ::GetCurrentProcessId();
FindProcessWindow(a);
if(s_hWnd==0)
{
::AfxMessageBox(TEXT("获取失败\n"));
}
else
{
::AfxMessageBox(TEXT("获取成功\n"));
}
::SendMessage(s_hWnd,WM_KEYDOWN,0,'H');
}
------解决方案--------------------
WM_KEYDOWN
nVirtKey = (int) wParam; // virtual-key code
lKeyData = lParam; // key data
------解决方案--------------------
::SendMessage(s_hWnd,WM_KEYDOWN,0,'H');
s_hWnd是那来的? 使记事本窗体句柄吗?
如果是的话不行 要找到记事本的edit控件句柄才可以 只有这样发才有效 还有试着把大写H改成小写h
检查一下你的这句发送语句。
我写了一个带对话框资源的dll,用hook的方式注入到一个进程,然后在对话框上添加一个按钮,点击按钮的时候就向被注入的进程窗口发送键盘H按下的消息,可是不成功,用记事本测试,h没有输入进去。
哪位大侠帮忙看看问题在哪呢?
代码如下:
HWND FindProcessWindow(DWORD processID)
{
s_hWnd = 0;
EnumWindows(EnumWindowsProc, processID);
return s_hWnd;
}
void CMainDlg::OnBnClickedButton1()
{
//TODO: 在此添加控件通知处理程序代码
DWORD a= ::GetCurrentProcessId();
FindProcessWindow(a);
if(s_hWnd==0)
{
::AfxMessageBox(TEXT("获取失败\n"));
}
else
{
::AfxMessageBox(TEXT("获取成功\n"));
}
::SendMessage(s_hWnd,WM_KEYDOWN,0,'H');
}
------解决方案--------------------
WM_KEYDOWN
nVirtKey = (int) wParam; // virtual-key code
lKeyData = lParam; // key data
------解决方案--------------------
::SendMessage(s_hWnd,WM_KEYDOWN,0,'H');
s_hWnd是那来的? 使记事本窗体句柄吗?
如果是的话不行 要找到记事本的edit控件句柄才可以 只有这样发才有效 还有试着把大写H改成小写h
检查一下你的这句发送语句。