模拟其它进程窗口按钮点击事件,见鬼了? 高分请教

hurryboylqs 2016-06-08 02:11:33
代码如下:

我就记得以前是可以的,我的系统是win10在win7下试了也不行


BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)
{
TCHAR lpWinTitle[256],lpClassName[256];
::GetWindowTextW(hwnd,(LPWSTR)lpWinTitle,255); //获得窗口caption
::GetClassNameW(hwnd,(LPWSTR)lpClassName,255); //获得窗口类名
if (wcsicmp((LPWSTR)lpWinTitle,L"OK")==0 && wcsicmp((LPWSTR)lpClassName,L"Button")==0)
{
SetCapture(hwnd);
UINT nCtrlID = ::GetDlgCtrlID(hwnd);
::PostMessage(hwnd,WM_COMMAND, MAKEWPARAM(nCtrlID,BN_CLICKED), NULL);
return FALSE;
}
return TRUE ;
}

void CDemoDlg::OnBnClickedOk()
{
HWND hDlg = ::FindWindow(_T("#32770"),_T("Installer Language"));
if (hDlg)
{
EnumChildWindows(hDlg,EnumChildProc,0);
}
}
...全文
93 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2016-06-08
  • 打赏
  • 举报
回复
hurryboylqs 2016-06-08
  • 打赏
  • 举报
回复
搞定了 是权限问题,我是管理员权限还需要右键“”管理员运行“”才可以,算了 我在UAC哪里设置必须管理员运行好了
Eleven 2016-06-08
  • 打赏
  • 举报
回复
The WM_COMMAND message is sent when the user selects a command item from a menu, when a control sends a notification message to its parent window, or when an accelerator keystroke is translated.
Eleven 2016-06-08
  • 打赏
  • 举报
回复
UINT nCtrlID = ::GetDlgCtrlID(hwnd); ::PostMessage(hwnd,WM_COMMAND, MAKEWPARAM(nCtrlID,BN_CLICKED), NULL); 这里第一个参数错了,应该是按钮的父窗口,GetParent(hwnd) 即修改成: ::PostMessage(::GetParent(hwnd),WM_COMMAND, MAKEWPARAM(nCtrlID,BN_CLICKED), NULL);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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